我有一個存儲過程,其中包括4-5表連接操作和SP我執行兩個不同的數據庫(所有表定義是相同的)然後在DB-1,SP需要20-25秒,並在DB-2 SP採取1秒後執行,然後我重建DB-1索引,然後DB-1的SP快速工作與以前相比。表索引影響SQL連接查詢執行時間嗎?
因此,連接和表索引之間的任何關係?如果是的話,那麼如何解決這類問題呢?
我有一個存儲過程,其中包括4-5表連接操作和SP我執行兩個不同的數據庫(所有表定義是相同的)然後在DB-1,SP需要20-25秒,並在DB-2 SP採取1秒後執行,然後我重建DB-1索引,然後DB-1的SP快速工作與以前相比。表索引影響SQL連接查詢執行時間嗎?
因此,連接和表索引之間的任何關係?如果是的話,那麼如何解決這類問題呢?
我理解你的問題,詢問索引的使用是否會影響連接性能。答案是響亮的「是」。
一般來說,加入到一個僅需要幾行的表中就會使用索引(如果存在的話)。
加入到需要大多數表的表中將導致「全表掃描」(Oracle術語),其中DBMS將構建連接鍵的散列,並將其作爲索引以便隨後進行探測加入時使用正確的值。
請參閱http://en.wikipedia.org/wiki/Join_%28SQL%29#Implementation以及它參考的文章加入算法以便對這些文章進行良好的概述。
感謝科林的寶貴回覆.. –
您正在使用哪些DBMS?兩個數據庫上的所有設置是否相同?兩個數據庫中的數據是否相同? (大概不會!)數據的大小和分佈情況如何:數據庫之間的差異如何? –
如果您使用的是Oracle(例如),是否以相同方式收集統計數據? –
1)我正在使用SQL Server 2008 R2。 2)是的所有設置都是相同的。 3)兩個數據庫的數據都不相同。 –