SQL Server -從零開始-2

  • 2666
  • 0

SQL Server -從零開始-2

索引的建立:

何謂索引,當我們使用資料庫的時候,最主要的就是效能。

索引就是用來提升查詢的效能,在理論上,我們可以在資料表上建立"許多"索引來滿足各類的查詢資料。

然而索引可以提升我們查詢的效能,相對的當資料有所變動的時候(新增、修改、刪除),索引也要跟著有變動,也就是我們所謂的"維護"。

索引類似我們書籍的目錄,但是他使用的方法更有效率。

在SQL SERVER 上所建立維護索引的結構稱為[B-TREE],而此結構是由零或多個中央層級[intermediate-level]的節點以及零或多個葉節點根節點所組合而成的。

indextree[1].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

http://blog.sqlauthority.com/2010/07/04/sql-server-index-levels-page-count-record-count-and-dmv-%C2%A0sys-dm_db_index_physical_stats/

參考書籍

Inside Microsoft SQL Server 2008: T-SQL Programming (Pro-Developer)

http://www.amazon.com/Inside-Microsoft-SQL-Server-2008/dp/0735626030/ref=sr_1_1?ie=UTF8&qid=1295858941&sr=8-1

Inside Microsoft SQL Server 2005: The Storage Engine (Solid Quality Learning)

http://www.amazon.com/Inside-Microsoft-SQL-Server-2005/dp/0735621055/ref=sr_1_2?s=books&ie=UTF8&qid=1295860573&sr=1-2

------------------

叢聚

http://jackyshih.pixnet.net/blog/post/5839238


叢聚索引
http://msdn.microsoft.com/en-us/library/ms177443.aspx

非叢聚索引
http://msdn.microsoft.com/en-us/library/ms177484.aspx