【发布时间】:2015-04-09 01:06:57
【问题描述】:
我有一个问题:
SELECT DISTINCT field1 FROM table1 WHERE field2 = something
(table1包含100万条记录,执行时间:0.106sec,返回:20条记录)
另一个查询
SELECT DISTINCT similarField1 FROM table2 WHERE similarField2 = somethingElse
(table2包含50万条记录,执行时间:0.078秒,返回:20条记录)
现在如果我运行一个查询,通过结合以上两者:
SELECT DISTINCT field1 FROM table1 WHERE field2 = something AND field1 NOT IN (SELECT DISTINCT similarField1 FROM table2 WHERE similarField2 = somethingElse)
即使运行 10 分钟也没有结果。为什么它变得非常缓慢,以及可能的解决方案。
编辑:我正在使用 MySQL 和 dbvisualizer 6.5
【问题讨论】:
-
这是什么,MySql 还是 MS SQL-Server?
-
MySQL,抱歉删除了 sql-server 标签
-
因为 MySQL 很慢。您可以尝试
LEFT JOIN这两个选择并仅返回那些没有匹配的行。 (leftjoinedquery.field1 为空)。 -
我同意 GolezTrol。如果可能的话,你应该加入表格。
-
感谢戈莱兹!我试过
SELECT DISTINCT field1 FROM table1 LEFT OUTER JOIN table2 ON table1.field1 = table2.similarField1 WHERE table1.field2 = something AND table2.similarField2 = somethingElse确实提高了速度(花了 35 秒),但没有给出我想要的结果
标签: mysql query-optimization query-performance