簡體   English   中英

內部聯接太慢。 怎么會更快

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM