Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance `PDO SQLite中的INTERSECT`vs`internal JOIN`_Performance_Sqlite - Fatal编程技术网

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