一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。
聚集索引確定表中資料的物理順序。聚集索引類似於**簿,按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此乙個表只能包含乙個聚集索引。但該索引可以包含多個列(組合索引),就像**簿按姓氏和名字進行組織一樣。
聚集索引對於那些經常要搜尋範圍值的列特別有效。使用聚集索引找到包含第乙個值的行後,便可以確保包含後續索引值的行在物理相鄰。例如,如果應用程式執行的乙個查詢經常檢索某一日期範圍內的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然後檢索表中所有相鄰的行,直到到達結束日期。這樣有助於提高此類查詢的效能。同樣,如果對從表中檢索的資料進行排序時經常要用到某一列,則可以將該錶在該列上聚集(物理排序),避免每次查詢該列時都進行排序,從而節省成本。
當索引值唯一時,使用聚集索引查詢特定的行也很有效率。例如,使用唯一雇員 id 列 emp_id 查詢特定雇員的最快速的方法,是在 emp_id 列上建立聚集索引或 primary key 約束。
1、含有大量非重複值的列。
2、使用between,>,>=,《或<=返回乙個範圍值的列
3、被連續訪問的列
4、返回大型結果集的查詢
5、經常被使用連線或group by子句的查詢訪問的列
下面的表總結了何時使用聚集索引或非聚集索引:
動作描述
使用聚集索引
使用非聚集索引
列經常被分組排序應應
返回某範圍內的資料應不應
乙個或極少不同值
不應不應
小數目的不同值應不應
大數目的不同值不應應
頻繁更新的列不應應
外來鍵列應
應主鍵列應應
頻繁修改索引列不應應
注意事項 定義聚集索引鍵時使用的列越少越好,這一點很重要。如果定義了乙個大型的聚集索引鍵,則同乙個表上定義的任何非聚集索引都將增大許多,因為非聚集索引條目包含聚集鍵。當把 sql 指令碼儲存到可用空間不足的磁碟上時,索引優化嚮導不返回錯誤。有關 microsoft® sql server™ 2000 中如何實現非聚集索引的更多資訊,請參見非聚集索引。
在分析過程中,索引優化嚮導會消耗相當多的 cpu 及記憶體資源。最好在生產伺服器的測試版上執行優化,而不要在生產伺服器上執行。此外,最好在另一台計算機上而非執行 sql server 的計算機上執行該嚮導。該嚮導不能用於在 sql server 6.5 版或更早版本的資料庫中選擇或建立索引及統計資訊。
在建立聚集索引之前,應先了解您的資料是如何被訪問的。可考慮將聚集索引用於:
包含大量非重複值的列。使用下列運算子返回乙個範圍值的查詢:between、>、>=、< 和 <=。被連續訪問的列。返回大型結果集的查詢。經常被使用聯接或 group by 子句的查詢訪問的列;一般來說,這些是外來鍵列。對 order by 或 group by 子句中指定的列進行索引,可以使 sql server 不必對資料進行排序,因為這些行已經排序。這樣可以提高查詢效能。 oltp 型別的應用程式,這些程式要求進行非常快速的單行查詢(一般通過主鍵)。應在主鍵上建立聚集索引。 聚集索引不適用於:
頻繁更改的列 這將導致整行移動,因為 sql server 必須按物理順序保留行中的資料值。這一點要特別注意,因為在大資料量事務處理系統中資料是易失的。寬鍵 來自聚集索引的鍵值由所有非聚集索引作為查詢鍵使用,因此儲存在每個非聚集索引的葉條目內。
非聚集索引 百科
非聚集索引是一種索引,該索引中索引的邏輯順序與磁碟上行的物理儲存順序不同。非聚集索引與聚集索引一樣有 b 樹結構,但是有兩個重大差別 資料行不按非聚集索引鍵的順序排序和儲存。非聚集索引的葉層不包含資料頁。相反,葉節點包含索引行。每個索引行包含非聚集鍵值以及乙個或多個行定位器,這些行定位器指向有該鍵值...
AnimateWindow 百度百科
animatewindow 開放分類 程式設計 計算機 api 函式功能 該函式能在顯示與隱藏視窗時能產生特殊的效果。有兩種型別的動畫效果 滾動動畫和滑動動畫。函式原型 bool animatewindow hwnd hwnd,dword dwtime,dword dwflags 引數 hwnd 指...
WCF百度百科
根據微軟官方的解釋,wcf 之前的版本名為 indigo 是使用託管 建立和執行面向服務 service oriented 應用程式的統一框架。它使得開發者能夠建立乙個跨平台的安全 可信賴 事務性的解決方案,且能與已有系統相容協作。wcf是微軟分布式應用程式開發的集大成者,它整合了.net平台下所有...