SQL Server 索引概述
索引简介
- 目的:提升SQL Server性能,加快查询速度,减少响应时间。
- 限制:合理使用索引,避免过多索引影响数据更新操作和浪费硬盘空间。
索引分类
- 唯一索引 (UNIQUE):确保索引值唯一。
- 主键索引:自动创建,具有唯一性。
- 聚集索引 (CLUSTERED):物理上连续存储记录。
- 非聚集索引 (NONCLUSTERED):逻辑上连续,物理存储不连续。
创建索引的语法
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_name ON object (column_name [ASC | DESC], ...) [ WITH options ] [ ON { filegroup_name | "default" } ]
object
:指定数据库、所有者和表或视图的名称。options
:包括填充因子、排序选项等。
索引参数
UNIQUE
:创建唯一索引。CLUSTERED
:创建聚集索引。NONCLUSTERED
:创建非聚集索引。index_name
:索引名称。ASC | DESC
:指定升序或降序。PAD_INDEX
:索引填充选项。FILLFACTOR
:指定索引页填充百分比。SORT_IN_TEMPDB
:中间排序结果存储选项。IGNORE_DUP_KEY
:处理重复键值的选项。STATISTICS_NORECOMPUTE
:统计信息自动更新选项。DROP_EXISTING
:删除并重新创建索引的选项。
创建索引示例
- 创建唯一聚集索引和非聚集索引。
- 创建聚集索引和非聚集索引。
- 创建非聚集复合索引。
- 创建非聚集覆盖索引。
- 创建非聚集筛选索引。
修改和维护索引
ALTER INDEX
:重建、禁用或重新组织索引。sp_helpindex
:查看索引信息。dbcc showcontig
:检查索引碎片信息。dbcc indexdefrag
:整理索引碎片。updatestatistics
:更新统计信息。
索引定义原则
- 避免对频繁更新的表创建过多索引。
- 在查询条件、排序或分组操作中常用的列上建立索引。
- 优先使用小数据类型和整数作为索引键。