3
我不知道哪條路是更快`INTERSECT` VS`INNER JOIN`在PDO的SQLite
SELECT Id FROM T1
INTERSECT
SELECT Id FROM T2
或
SELECT T1.Id
FROM T1
INNER JOIN T2 ON T1.Id=T2.Id
我不知道哪條路是更快`INTERSECT` VS`INNER JOIN`在PDO的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
值。
INNER JOIN
被實現爲嵌套循環連接,即在另一個表中查找每個表的Id
值。 (SQLite的選擇另一個表作爲一個與Id
的索引;如果既不表具有這樣的指數,它創建一個臨時索引。)
所以之實踐的區別在於INTERSECT
總是創建的臨時表,而JOIN
可以工作直接在實際的表上。 (如果T1
和T2
是複雜的子查詢,JOIN
還將需要臨時表,並且將有沒有差別。)
['當用於INNER JOIN'可以用'INTERSECT'模擬'DISTINCT'](HTTP:/ /blog.sqlauthority.com/2008/08/03/sql-server-2005-difference-between-intersect-and-inner-join-intersect-vs-inner-join/)。因此,我認爲'INNER JOIN'會更快。 – hjpotter92