如何索引不在另一个表中的值

时间:2018-11-08 19:53:35

标签: sql sqlite query-performance

我需要找到一个表中的所有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万条记录,查询运行大约需要500毫秒。

是什么原因导致查询运行如此缓慢,关于如何加快查询速度的任何建议?

1 个答案:

答案 0 :(得分:0)

您可以将LEFT JOINWHERE的{​​{1}}子句一起使用:

table2.ID IS NULL

我相信这样会更快。