索引用於提高sql查詢的性能,但我總是覺得很難決定在哪種情況下應該使用索引,哪些情況不適用。我想澄清一些關於非聚集索引我的疑惑SQL Server索引疑問
什麼叫非聚集索引鍵。正如書中所說,非聚簇索引的每個索引行都包含非聚簇鍵值,因此這意味着它是我們在其中創建非聚簇索引的列,即如果在empname varchar(50)上創建索引,則非聚簇鍵將爲 ,即empname 。
爲什麼最好在小寬度的列上創建索引。這是由於與更多寬度列進行比較需要更多時間用於SQL Server引擎,還是因爲它會增加中間節點的層次結構,因爲頁面大小是固定的,因此頁面中的寬度列或節點中包含的索引行更少。
如果一個表包含多個非聚集列,以便非聚集鍵是否將組合所有此列或某些唯一ID由SQL內部生成,而定位器將指向實際的數據行。如果可能的話請清除一些實時的示例和圖表。
爲什麼據說具有不可重複值的列可以很好地創建索引,即使它包含重複值,它肯定會提高性能,因爲一旦它達到某個鍵值,其定位器將立即找到其實際行。
如果在索引中使用的列不是唯一的,它如何從表中找到實際的數據行。
請參考任何書籍或教程,這將是有用的清除我的疑慮。
非常感謝。你的文章給我很清楚的瞭解索引 – user1149555 2012-01-14 18:40:52
請清除我的觀點如何在內部維護複合非聚集索引SQL Server – user1149555 2012-01-15 03:15:58
昨天我發佈這個視頻後,我發現這個視頻/演示文稿刪除了大量的技術細節(B-樹的等等),並且純粹地展示瞭如何使用索引來加速查詢:http://vimeo.com/26454091 - 它還顯示了聚類和非聚類索引之間的區別。 – kastermester 2012-01-15 14:39:30