[英]INNER JOIN too slow. how can it bee quicker
我的密碼
SELECT * FROM andmed3 INNER JOIN test ON andmed3.isik like concat('%', test.isik, '%')
在andmed3中,我有13萬行,而在測試中,我有1萬行,它不會運行。 當我將其限制為0,500時,它將查詢2-3分鍾。
怎么會更好呢?
andmed3表
id name number isik link stat else
-----------------------------------------------
1 john 15 1233213 none 11 5
8455666
7884555
測試台
id isik
-----------
45 8455666
所以我需要來自andmed3的所有行,其中是測試中出現的數字
問題在於,引擎問題需要為聯接中的每一對行設置LIKE表達式(130.000 X 10.000)。 在這種情況下,索引也是無用的,因為需要對表達式進行求值才能完成連接(並且您不能將表達式放在索引內)
也許是您的體系結構/架構存在問題。 如果沒有人預料到需要基於字符串表達式連接兩個表。
可能的解決方案:
(這是一個瘋狂的猜測)
從您的示例很難確定,但是如果andmed3.isik包含要在連接中使用的所有可能值,則可以嘗試將其放在另一個表中,如下所示:
Andmed3Id isik
--------- -------
1 1233213
1 8455666
1 7884555
當然,要填充此表,您需要一個策略,可能的策略是:在插入/更新中,在某個小時的后期中進行批量處理。
如果適合,您只需要在查詢中再添加一個聯接即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.