我不知道哪种方式更快
SELECT Id FROM T1
INTERSECT
SELECT Id FROM T2
或
SELECT T1.Id
FROM T1
INNER JOIN T2 ON T1.Id=T2.Id
最佳答案
此时SQLite实现INTERSECT
的方法是将两个查询的结果复制到两个临时排序表中,然后在其中查找第一个表的每个Id
值第二张 table 。
INNER JOIN
实现为嵌套循环连接,即,一个表的每个 Id
值都在另一个表中查找。 (SQLite 选择另一个表作为索引在 Id
上的表;如果两个表都没有这样的索引,它会创建一个临时索引。)
所以实际区别在于 INTERSECT
总是创建临时表,而 JOIN
可以直接在实际表上工作。
(如果T1
和T2
是复杂的子查询,JOIN
也需要临时表,没有区别。)
关于performance - `INTERSECT` 与 PDO SQLite 中的 `INNER JOIN`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633009/