簡體   English   中英

JOIN ON IN進行全表掃描

[英]JOIN ON IN does a full table scan

我有一個查詢,我必須匹配序列號,其中有時序列號是相同的,有時其中一個序列號帶有一個前置的“ s”,因此我必須考慮這兩種情況。 這是我要問的示例代碼。

SELECT * 
FROM table1 t1
JOIN table2 t2 ON t1.serial_number IN(concat('s', t2.serial_number), t2.serial_number);

如果我在JOIN中使用一種或另一種情況,則查詢運行良好,但是當我同時使用這兩種情況並進行說明時,它會進行全表掃描,這會非常緩慢。 有任何想法嗎? 幫助將不勝感激。

您可以運行兩個INNER JOINS。 由於INNER僅包含兩個都會給您命中的值,因此您不必擔心重復,因為如果數據存在於一個中,則不會存在於另一個中。

像這樣:

SELECT * FROM table1 t1
INNER JOIN table2 t2a on t1.serial_number = t2a.serial_number
INNER JOIN table2 t2b on t1.serial_number = concat('s',t2b.serial_number)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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