SQL Server -從零開始-2
索引的建立:
何謂索引,當我們使用資料庫的時候,最主要的就是效能。
索引就是用來提升查詢的效能,在理論上,我們可以在資料表上建立"許多"索引來滿足各類的查詢資料。
然而索引可以提升我們查詢的效能,相對的當資料有所變動的時候(新增、修改、刪除),索引也要跟著有變動,也就是我們所謂的"維護"。
索引類似我們書籍的目錄,但是他使用的方法更有效率。
在SQL SERVER 上所建立維護索引的結構稱為[B-TREE],而此結構是由零或多個中央層級[intermediate-level]的節點以及零或多個葉節點與根節點所組合而成的。
![indextree[1].jpg](file:///C|/Users/rice/AppData/Local/Microsoft/Windows/Temporary%20Internet%20Files/Content.IE5/7I4OJJVP/indextree%5B1%5D.jpg)
叢聚索引(clustered index)
定義索引資料的資料欄稱為叢聚鍵,叢聚索引會根據叢聚鍵實際排列資料列,但是因為資料表只能排序一次,每個資料表只能許可建立一個資料叢聚索引。
一般而言,每一個資料表都要有一個叢聚索引,而且通常會建立在主索引鍵上。
非叢聚索引(NON-clustered index)
不會排列資料表的資料列,可以在資料表內建立最多249 個索引。非叢聚索引跟叢聚索引一樣使用B-TREE的結構,
非叢聚索引的指標並非真正的資料,而是指向下面兩種方式。
1.如果有叢聚索引則指向叢聚鍵
2.如果沒有叢聚索引,只會指向資料列識別碼(RID),他會參照資料表某筆資料實際的位置。
叢聚和非叢聚建立方式相同,差別在於NONCLUSTERED關鍵字。
------------------
B-TREE
http://msdn.microsoft.com/en-US/library/ms379572%28v=VS.80%29.aspx
參考書籍
Inside Microsoft SQL Server 2008: T-SQL Programming (Pro-Developer)
Inside Microsoft SQL Server 2005: The Storage Engine (Solid Quality Learning)
------------------
叢聚
http://jackyshih.pixnet.net/blog/post/5839238