performance - `INTERSECT` 与 PDO SQLite 中的 `INNER JOIN`

标签 performance sqlite

我不知道哪种方式更快

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 可以直接在实际表上工作。 (如果T1T2是复杂的子查询,JOIN也需要临时表,没有区别。)

关于performance - `INTERSECT` 与 PDO SQLite 中的 `INNER JOIN`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633009/

相关文章:

node.js - react : Importing modules with object destructuring, 还是单独 react ?

java - 以有效的方式获取所有可能的数组索引位置

performance - 快速加入一组折线

sql - 使用子查询进行分组

database - MicrosoftEntityFrameworkCore 无法从程序集中找到迁移

python - SQL中的x'0a'是什么意思?

java - Android中上传JPG图片到服务器

Java拆分字符串表现

android - 如何使用多个 AsyncTask 同步应用程序

php - 有效地查找表中不存在的第一个数字?