我需要找到在一个表中但不在另一个表中的所有ID。
我有一个简单的选择:
SELECT ID
FROM Table1
WHERE ID NOT IN (SELECT id FROM Table2)但是如果我做一个EXPLAIN QUERY PLAN,我会得到
"0"|"0"|"0"|"SCAN TABLE Table1"
"0"|"0"|"0"|"USING INDEX index_Table2_id FOR IN-OPERATOR"我的两个表都将id定义为id integer PRIMARY KEY (用于table1)和一个用于table2的普通索引。
关于如何加快查询速度,有什么建议吗?
我在table1中有大约200000条记录,在table2中有大约200万条记录,查询运行大约需要500ms。
是什么原因导致查询运行如此缓慢,我有什么建议可以加快它的速度吗?
发布于 2018-11-09 21:20:37
您可以将LEFT JOIN与table2.ID IS NULL的WHERE子句一起使用
SELECT table1.ID
FROM table1 LEFT JOIN table2 ON table1.ID = table2.ID
WHERE table2.ID IS NULL;我相信这会更快。
https://stackoverflow.com/questions/53215194
复制相似问题