最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL Server 索引知識匯總(最新整理)

 更新時間:2026年07月23日 10:55:38   作者:哥本哈士奇  
在SQL Server中,索引是提高數(shù)據(jù)庫查詢性能的關鍵組件,通過為表中的一列或多列創(chuàng)建索引,可以加速數(shù)據(jù)的檢索速度,下面給大家介紹SQL Server 索引知識匯總,感興趣的朋友一起看看吧

摘要

本文對SQLServer中的索引進行一個知識總結。

一、堆表(Heap)

未創(chuàng)建聚集索引的表稱為堆表,數(shù)據(jù)無序追加,無統(tǒng)一排序。

  • 優(yōu)勢:寫入極快,適合日志、流水表等持續(xù)大批量寫入場景
  • 缺點:無索引時查詢必須全表掃描,數(shù)據(jù)量越大成本越高
-- 創(chuàng)建堆表(無聚集索引)
CREATE TABLE TestData (
    TestId integer, TestName varchar(255), TestDate date,
    TestType integer, TestData1 integer, TestData2 varchar(100),
    TestData3 XML, TestData4 varbinary(max), TestData4_FileType varchar(3)
);
ALTER TABLE TestData REBUILD;   -- 重建堆表
DROP TABLE TestData;            -- 刪除表

二、聚集索引(Clustered Index)

B+樹結構,索引鍵與完整行數(shù)據(jù)存儲在葉子節(jié)點。一張表最多1個聚集索引,創(chuàng)建后不再為堆表。

  • 優(yōu)勢:WHERE條件含索引鍵時直接定位整行,無需回表;ORDER BY與索引鍵一致時省去排序開銷
  • 缺點:DML維護成本高——鍵值更新會觸發(fā)頁拆分/遷移,INSERT/DELETE也有額外開銷
CREATE CLUSTERED INDEX IX_TestData_TestId ON dbo.TestData (TestId);
ALTER INDEX IX_TestData_TestId ON TestData REBUILD WITH (ONLINE = ON);   -- 在線重建
DROP INDEX IX_TestData_TestId ON TestData WITH (ONLINE = ON);           -- 在線刪除

三、非聚集索引(Non-Clustered Index)

B+樹結構,葉子節(jié)點不存完整行,僅存行定位指針(指向聚集索引鍵或堆表的RID)。

  • 優(yōu)勢:可建多個索引適配不同查詢;DML維護開銷低于聚集索引
  • 缺點:增刪改仍需維護所有非聚集索引;索引越多寫入越慢,需權衡查詢與寫入性能
CREATE INDEX IX_TestData_TestDate ON dbo.TestData (TestDate);
ALTER INDEX IX_TestData_TestDate ON TestData REBUILD WITH (ONLINE = ON);
DROP INDEX IX_TestData_TestDate ON TestData;

四、列存儲索引(Column Store Index)

按列存儲的特殊索引,分為聚集列存儲與非聚集列存儲兩種。

  • 優(yōu)勢:專為DW/大寬表/海量事實表設計,聚合分析性能提升最高100倍,高壓縮算法存儲占用最高減少90%
  • 缺點:不支持 varchar(max)/nvarchar(max)/XML/text/image/CLR 類型;開啟復制/CDC的表無法使用;DML寫入開銷遠高于行式索引
-- 創(chuàng)建聚集列存儲索引
CREATE CLUSTERED COLUMNSTORE INDEX CIX_TestData_TestType ON dbo.TestData (TestType)
    WITH (DATA_COMPRESSION = COLUMNSTORE);
DROP INDEX CIX_TestData_TestType;

五、XML 索引

專用于 XML 類型字段,分為主XML索引二級XML索引(PATH/VALUE/PROPERTY),前置要求:表必須有主鍵聚集索引。

  • 優(yōu)勢:避免每次查詢加載解析完整XML文檔,適合大XML字段局部讀取
  • 缺點:磁盤占用極高(XML每個標簽生成多條索引記錄);XML更新時同步維護帶來寫入損耗
CREATE PRIMARY XML INDEX PXML_TestData_TestData3 ON TestData (TestData3);
CREATE XML INDEX XMLPATH_TestData_TestData3 ON TestData (TestData3)
    USING XML INDEX PXML_TestData_TestData3 FOR PATH;
CREATE XML INDEX XMLPROPERTY_TestData_TestData3 ON TestData (TestData3)
    USING XML INDEX PXML_TestData_TestData3 FOR PROPERTY;
CREATE XML INDEX XMLVALUE_TestData_TestData3 ON TestData (TestData3)
    USING XML INDEX PXML_TestData_TestData3 FOR VALUE;

六、全文索引(Full-Text Index)

將文本拆分為分詞(Token)構建索引,索引文件獨立存放于全文目錄,不混存于數(shù)據(jù)文件。

  • 優(yōu)勢:支持大文本/二進制字段檢索(char/varchar/nvarchar/text/XML/varbinary(max)/FILESTREAM);支持精確短語、前綴模糊、變形檢索、鄰近詞、同義詞、加權權重等高級檢索
  • 缺點:全文檢索由獨立 MSFTESQL 服務執(zhí)行,會與 SQL Server 爭搶內(nèi)存/IO 資源
CREATE FULLTEXT CATALOG fulltextCatalog AS DEFAULT;
CREATE FULLTEXT INDEX ON dbo.TestData (TestData4 TYPE COLUMN TestData4_FileType)
    KEY INDEX PK_TestData WITH STOPLIST = SYSTEM;
ALTER FULLTEXT CATALOG fulltextCatalog REBUILD;
DROP FULLTEXT INDEX ON dbo.TestData;

七、索引衍生變體

1. 包含列索引(Included Columns)

非聚集索引擴展:將指定字段存入葉子節(jié)點,實現(xiàn)"類聚集索引"效果,免去回表。支持 text/ntext/image 外的絕大多數(shù)類型。

CREATE NONCLUSTERED INDEX IX_TestData_TestDate_incTestData3 ON TestData (TestDate)
    INCLUDE (TestData3);

2. 函數(shù)索引(基于計算列)

SQL Server 不直接支持函數(shù)索引,通過持久化計算列模擬實現(xiàn)。

ALTER TABLE TestData ADD TestDatePlus7Days AS DATEADD(DAY, 7, TestDate) PERSISTED;
CREATE NONCLUSTERED INDEX IX_TestData_TestDate_Plus7Days ON TestData (TestDatePlus7Days);

3. 篩選索引(Filtered Index)

帶 WHERE 條件的非聚集索引,縮小索引體積、降低維護成本。僅當查詢條件與索引 WHERE 完全匹配時優(yōu)化器才會選用。

CREATE INDEX IX_TestData_TestDate_TestTypeEq1 ON TestData (TestDate) WHERE TestType = 1;

4. 覆蓋索引(Covering Index)

設計思路:查詢所有字段要么是索引鍵,要么在 INCLUDE 中,完全消除回表,性能最優(yōu)。

CREATE INDEX IX_TestData_TestDate_TestType_AllData ON TestData (TestDate, TestType)
    INCLUDE (TestData1, TestData2, TestData3, TestData4);
-- 該查詢完全走索引,無需訪問原表
SELECT TestData1, TestData2, TestData3, TestData4
FROM TestData
WHERE TestDate > CURRENT_TIMESTAMP - 1 AND TestType = 1;

到此這篇關于SQL Server 索引知識匯總的文章就介紹到這了,更多相關SQL Server 索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SQLServer 管理常用SQL語句

    SQLServer 管理常用SQL語句

    SQL Server管理常用SQL語句,方便快速的解決問題。
    2009-08-08
  • c++基礎語法:虛繼承

    c++基礎語法:虛繼承

    虛繼承概念的提出主要是為了解決C++多繼承的問題。下面我就為大家列舉一個簡單的例子
    2013-09-09
  • Sql Server datetime問題

    Sql Server datetime問題

    SQL SERVER數(shù)據(jù)庫用datetime類型的時候 需要注意的地方
    2009-03-03
  • SQL從慢查詢到高效查詢實戰(zhàn)優(yōu)化案例

    SQL從慢查詢到高效查詢實戰(zhàn)優(yōu)化案例

    本文詳細介紹了SQL優(yōu)化的黃金流程,包括監(jiān)控慢查詢、分析執(zhí)行計劃、針對性優(yōu)化和驗證效果,幫助讀者全面掌握SQL優(yōu)化技巧,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • 如何在navicat中利用sql語句建表+添加數(shù)據(jù)

    如何在navicat中利用sql語句建表+添加數(shù)據(jù)

    這篇文章主要給大家介紹了關于如何在navicat中利用sql語句建表+添加數(shù)據(jù)的相關資料,Navicat是一套快速,專為簡化數(shù)據(jù)庫的管理及降低系統(tǒng)管理成本而設,它的設計符合數(shù)據(jù)庫管理員、開發(fā)人員及中小企業(yè)的需要,需要的朋友可以參考下
    2023-10-10
  • MySql刪除和更新操作對性能有影響嗎

    MySql刪除和更新操作對性能有影響嗎

    做編程的同胞都知道,所有的項目都是離不開數(shù)據(jù)庫,數(shù)據(jù)庫離不開增刪改查操作,那么刪除和更新操作對性能有影響嗎?下面小編給大家詳細介紹MySql刪除和更新對性能的影響,需要的朋友可以參考下
    2015-08-08
  • ODBC連接數(shù)據(jù)庫以SQLserver為例圖文詳解

    ODBC連接數(shù)據(jù)庫以SQLserver為例圖文詳解

    開放數(shù)據(jù)庫互連(ODBC)是微軟提出的數(shù)據(jù)庫訪問接口標準,開放數(shù)據(jù)庫互連定義了訪問數(shù)據(jù)庫的API一個規(guī)范,這些API獨立于不同廠商的DBMS,也獨立于具體的編程語言,下面這篇文章主要給大家介紹了關于ODBC連接數(shù)據(jù)庫以SQLserver為例的相關資料,需要的朋友可以參考下
    2023-05-05
  • 有關sqlserver帳號被禁用的處理方法

    有關sqlserver帳號被禁用的處理方法

    這篇文章主要介紹了有關sqlserver帳號被禁用處理方法,需要的朋友可以參考下
    2017-12-12
  • SQL 面試題:窗口函數(shù)的價值,不只在于“寫法高級”

    SQL 面試題:窗口函數(shù)的價值,不只在于“寫法高級”

    窗口函數(shù)的核心價值在于?保留明細行的同時完成分組聚合計算?,解決“既要分組統(tǒng)計,又要展示原始行”的矛盾,而非單純追求語法復雜度 ,??本文介紹SQL面試題:窗口函數(shù)的價值,不只在于“寫法高級”,感興趣的朋友跟隨小編一起看看吧
    2026-07-07
  • SQL行轉列和列轉行代碼詳解

    SQL行轉列和列轉行代碼詳解

    這篇文章主要介紹了SQL行轉列和列轉行代碼詳解,涉及動態(tài)方案和靜態(tài)方案兩種處理方式,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10

最新評論

大新县| 富裕县| 外汇| 睢宁县| 都江堰市| 库尔勒市| 武邑县| 曲阳县| 灌南县| 牙克石市| 铜山县| 如皋市| 南陵县| 安庆市| 河津市| 临城县| 拉萨市| 内乡县| 伊金霍洛旗| 合山市| 威海市| 万荣县| 新津县| 祁阳县| 汪清县| 石阡县| 厦门市| 新疆| 康保县| 什邡市| 邯郸市| 芦山县| 承德县| 梅州市| 敦煌市| 碌曲县| 大悟县| 丹棱县| 新平| 宜黄县| 南华县|