我是否必須爲連接中引用的列創建索引? 例如ON子句中的列需要索引嗎?
SELECT
*
FROM
left_table
INNER JOIN
right_table
ON
left_table.foo = right_table.bar
WHERE
...
我應該在left_table(foo),right_table(bar)還是兩者上創建索引?
我注意到不同的結果,當我使用EXPLAIN(PostgreSQL系統)使用和不使用索引和周圍比較
(right_table.bar = left_table.foo)
我知道肯定指標用於左的順序切換WHERE子句,但我想知道是否需要在ON子句中列出列的索引。
合併連接算法通常在ON條件的兩側都會運行得更快。對於大型基數連接,這可能是最快的策略。如果沒有第二個索引,優化器甚至可能不會選擇合併連接策略。 –