Performance `PDO SQLite中的INTERSECT`vs`internal JOIN`
我不知道哪条路更快Performance `PDO SQLite中的INTERSECT`vs`internal JOIN`,performance,sqlite,Performance,Sqlite,我不知道哪条路更快 SELECT Id FROM T1 INTERSECT SELECT Id FROM T2 或 目前,SQLite通过将两个查询的结果复制到两个临时排序表中,然后在第二个表中查找第一个表的每个Id值来实现INTERSECT 内部联接实现为嵌套循环联接,即在另一个表中查找一个表的每个Id值。(SQLite选择另一个表作为索引位于Id上的表;如果两个表都没有这样的索引,它将创建一个临时索引。) 所以实际的区别是,INTERSECT总是创建临时表,而JOIN可以直接在实际表上工作
SELECT Id FROM T1
INTERSECT
SELECT Id FROM T2
或
目前,SQLite通过将两个查询的结果复制到两个临时排序表中,然后在第二个表中查找第一个表的每个
Id
值来实现INTERSECT
内部联接
实现为嵌套循环联接,即在另一个表中查找一个表的每个Id
值。(SQLite选择另一个表作为索引位于Id
上的表;如果两个表都没有这样的索引,它将创建一个临时索引。)
所以实际的区别是,INTERSECT
总是创建临时表,而JOIN
可以直接在实际表上工作。
(如果T1
和T2
是复杂的子查询,JOIN
也需要临时表,没有区别。)。因此,我认为内部连接
会更快。
SELECT T1.Id
FROM T1
INNER JOIN T2 ON T1.Id=T2.Id