想知道是否有人可以帮助我。我有两张桌子。表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