當我們在一個查詢中連接了多於2-3個表時,並且如果我們在所有表中有一個共同的列,那麼當我們在在多個表上連接時的SQL查詢性能
,時會有任何差異指定所有表格中公共列的值。
爲前:
select e.* from emp e, dept d where e.deptno = 10 and d.deptno = 10;
給定值的公共列中的一個,並加入與其他
爲前:
select e.* from emp e, dept d where e.deptno = 10 and d.deptno = e.deptno;
之所以問這個問題是,我有一個查詢(成本是17),當我按照例1指定值時會執行,但會被掛起從不執行,如果我加入列中的例子2.
請幫我理解這一點。
deptno不是唯一的,但是是複合PK的一部分,因此索引存在於該列上。我甚至收集了統計數字,但仍然沒有幫助。 – Savitha
@Savitha它是複合PK中的第一列嗎?因爲否則它什麼都不會做。 – Ariel
@Savitha等 - 這不是唯一的?在兩個表中?至少它們中的一個必須是唯一的,否則你的查詢將會爆炸成大量的行。 – Ariel