我有两个名为“table1”和“table2”的MySQL表,其中“table1”包含100万行数据,“table2”包含76万行数据。我想从“table1”中检索“table2”中不存在的所有数据。我尝试在查询中使用左连接,但是查询的执行时间非常长,并且在117965秒之后没有返回任何结果。2我希望得到结果的速度要快得多。
我正在寻找有关如何优化查询或找到更有效的方法来获取结果的建议。有人能帮助我解决此问题吗?
我尝试使用以下查询从table1获取table2中没有的数据:
SELECT t1.part, t2.company
FROM table1 t1
LEFT JOIN table2 t2 ON t1.part = t2.part AND t1.company = t2.company
WHERE t2.company IS NULL;
2条答案
按热度按时间ne5o7dgx1#
您可以避免
JOIN
:fcwjkofz2#
table2
需要此复合索引:(The列的顺序并不重要。)
您也可以使用
WHERE NOT EXISTS ( SELECT 1 FROM t2 ... )
来表达它,但它可能是相同的速度。我对你使用
SELECT t1.part, t2.company
表示怀疑。t2.company
必然是NULL
。也许你指的是t1.company
?以及“想要从“table 1”中检索所有数据”--也许您想要
SELECT t1.*