索引多個資料列提高效能(轉)

RegisterForBlog發表於2007-08-11
索引多個資料列提高效能(轉)[@more@]

  SQL伺服器只允許每個表格存在一個叢集索引(clustered index),因為叢集索引會記錄表格,同時根據索引關鍵字安排資料。這就帶來了極好的效能――當你只需要關心某個特定資料列的時候。

  

  但是,如果你想要透過一個以上的資料列來排列資料又會怎麼樣呢?你無法使用叢集索引,但是你可以為多個資料列建立一個非叢集索引,獲得大幅的效能提升。

  

  例如,加入你需要訪問自己的Sales(銷售)表格,並用SalesRep(銷售代表)和Date(日期)來排序。你可以建立兩個索引,並讓查詢最佳化器(Query Optimizer)來判斷你需要什麼,或者你可以建立一個對這兩個資料列的索引。SQL伺服器允許在一個非叢集索引裡存在多達16個資料列。

  

  每個非叢集索引包含有由你指定的關鍵字值,再加上從叢集索引獲得的值;當你需要它們的資料時,這就會作為指向真實資料行的指標。這意味著查詢引擎永遠都不需要訪問真正的資料行――如果你的非叢集索引將你完成特定任務所需要的值作為關鍵字。它會從索引和範圍獲取所需的所有內容,然後訪問符合條件的資料行。

  

  這一技術不是魔術子彈。每個額外的索引都會增加插入(Insert)、刪除(Delete)和更新(Update)操作的負擔,所以你應該小心地使用它。但是,花些時間去檢查應用程式裡的大多數常見的查詢和報告是值得的。很有可能的是,很多考慮周到的複合索引將會帶來效能上的大幅提高,這些索引會影響不止一個索引。

  

  這種方法的好處是,你總是可以進行撤銷操作。如果效能的下降變得無法接受,你只用刪除索引就行了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10763080/viewspace-948380/,如需轉載,請註明出處,否則將追究法律責任。

相關文章