想知道是否有人可以幫助我。我有兩張桌子。表A包含數百萬行,我查看整個表,表B包含大約5萬行,並且再次查看整個表。我使用下面的查詢:SQL查詢花費太長時間
SELECT t1.ID as [ID], count(*) as [Total]
FROM table1 t1
RIGHT JOIN table2 t2 ON t1.data LIKE '%' + t2.field3 + '%'
AND t1.ID = t2.ID
WHERE t1.ID not LIKE ''
GROUP BY t1.ID, t1.datetime
我使用右連接的原因是因爲,據我所知,它會從T2的所有記錄(這是我想要的),只有那些與它們匹配從t1開始。另外,我已經將'AND t1.ID = t2.ID'添加到SELECT語句中,因爲我認爲這會加快查詢速度(不會查找與t2中的值不匹配的ID),儘管這可能會被RIGHT JOIN,除非我的邏輯完全錯誤。另外,如果我只能解釋JOIN背後的邏輯 - table1中的數據列包含很多'stuff',並且其中的某個地方應該與t2.field3中的內容完全相同,例如, t1.data ='^ ABCD^00dasdas ^£ldasl32^XL0005 ^'和t2.field3將包含'XL0005'。
任何幫助表示讚賞。
感謝
你的'WHERE'子句應該是'WHERE t1.ID <>''' –
你使用哪個DBMS? MySQL Oracle DB2 .. – Joni
如果速度是一個問題,你有什麼索引在你的表上? – DaveRlz