適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric 中的 SQL 資料庫
可用的索引類型
下表列出了 SQL Server 中可用的索引類型,並提供了其他資訊的連結。
| 索引類型 | Description | 其他資訊 |
|---|---|---|
| Hash | 有了雜湊索引,便會透過記憶體中的雜湊表來存取資料。 雜湊索引會耗用固定數量的記憶體,也就是值區計數的函數。 |
記憶體最佳化資料表上的索引 雜湊索引設計指導方針 |
| 記憶體最佳化非叢集 | 對於已完成記憶體最佳化的非叢集索引,記憶體耗用量是資料列計數和索引鍵資料行大小的函數 |
記憶體最佳化資料表上的索引 記憶體最佳化的非叢集索引設計指導方針 |
| Clustered | 索引叢集根據叢集索引鍵的順序來排序和儲存資料表或檢視的資料列。 叢集索引將實作成 B 型樹狀索引結構,以根據它們的叢集索引鍵值快速地擷取資料列。 |
叢集與非叢集索引 建立叢集索引 叢集索引設計指導方針 |
| Nonclustered | 非叢集索引可在具有叢集索引的資料表或檢視中、或是堆積中定義。 非叢集索引中的每個索引資料列都含有非叢集鍵值與資料列定位器。 此定位器指向含有鍵值之叢集索引或堆積中的資料列。 索引中的資料列會依索引鍵值的順序儲存,但除非在資料表上建立叢集索引,否則不保證資料列會採用任何特定順序。 |
叢集與非叢集索引 建立非叢集索引 非叢集索引設計指導方針 |
| Unique | 唯一索引可確保索引鍵不含重複的值,因此資料表或檢視中的每個資料列就某方面而言都是唯一的。 唯一性可以是叢集與非叢集索引的屬性。 |
建立唯一索引 唯一索引設計指導方針 |
| Columnstore | 記憶體中的資料行存放區索引會使用資料行為基礎的資料儲存和資料行為基礎的查詢處理來儲存及管理資料。 資料行存放區索引可在主要執行大量載入和唯讀查詢的資料倉儲工作負載中順利運作。 與傳統的資料列導向儲存相較之下,使用資料行存放區索引最高可達到 10 倍查詢效能 改善,與未壓縮資料大小相較之下,最高可達到 7 倍資料壓縮 。 |
列存儲索引:概觀 資料行存放區索引設計指導方針 |
| 具有內含資料行的索引 | 除了索引鍵資料行以外,擴充為含有非索引鍵資料行的非叢集索引。 | 建立附加欄位的索引 |
| 導出資料行的索引 | 從其他一個或多個資料行的值,或特定決定性輸入衍生的資料行索引。 | 計算資料行的索引 |
| Filtered | 最佳化的非叢集索引,特別適合涵蓋從妥善定義的資料子集進行選取的查詢。 篩選索引會使用篩選述詞對資料表中的部分資料列進行索引。 與完整資料表索引相較,設計良好的篩選索引可以提升查詢效能、降低索引維護成本,並降低索引儲存成本。 |
建立篩選索引 篩選索引設計指導方針 |
| Spatial | 空間索引可以更有效率地在 geometry 資料類型之資料行的空間物件 (「空間資料」) 上執行特定作業。 空間索引會減少需要套用相當耗成本之空間作業的物件數目。 | 空間索引概觀 |
| XML | 在 xml 資料類型資料行中,一種細分且持續的 XML 二進位大型物件 (BLOB) 表示法。 | XML 索引 (SQL Server) |
| Full-text | 一種特殊類型的權杖型功能索引,由適用於 SQL Server 的 Microsoft Full-Text Engine 所建立與維護。 它可以有效地在字元字串資料中進行複雜字的搜尋。 | 擴展全文檢索索引 |
Note
文件通常會使用「B 型樹狀結構」一詞來指稱索引。 在資料列存放區索引中,資料庫引擎會實作 B+ 樹狀結構。 這不適用於資料行存放區索引或經記憶體最佳化的資料表。 如需詳細資訊,請參閱 SQL Server 和 Azure SQL 索引架構和設計指南。