SQL 索引
- 查看索引
exec sp_helpindex tablename
-
删除索引
drop index index_name on table_name
- 创建索引
1 --唯一 聚集索引 2 CREATE UNIQUE CLUSTERED INDEX indexName ON tableName(column_name[asc,desc]) 3 --不唯一 非聚集索引 4 CREATE NONCLUSTERED INDEX indexName ON tableName(column_name[asc,desc]) 5 --唯一 非聚集索 6 CREATE UNIQUE NONCLUSTERED indexName ON tableName(column_name[asc,desc])
临时表也可以直接创建CREATE NONCLUSTERED INDEX IDX_tme ON #temp(column_name1) INCLUDE (column2,column3)
注:
1、聚集索引每个表只能有一个;
2、如果索引有多列,第一个列才会用到索引查找,其余的是索引扫描;
3、INCLUDE是索引包含列,不会进行表排序
create index idx_A on A(biz_date) include(name,id) -
显示估计的执行计划
[Table Scan] 表扫描(最慢),对表记录逐行进行检查 [Clustered Index Scan] 聚集索引扫描(较慢),按聚集索引对记录逐行进行检查 [Index Scan] 索引扫描(普通),根据索引滤出部分数据在进行逐行检查 [Index Seek] 索引查找(较快),根据索引定位记录所在位置再取出记录 [Clustered Index Seek] 聚集索引查找(最快),直接根据聚集索引获取记录
- 命名规范
主键索引名为pk_字段名;唯一索引名为uk_字段名;普通索引名则为idx_字段名
- 查看效率
DBCC DROPCLEANBUFFERS --清除缓冲区 DBCC FREEPROCCACHE --删除计划高速缓存中的元素 --清缓存生产慎用 SET STATISTICS TIME ON --执行时间 SET STATISTICS IO ON--执行IO select * from test SET STATISTICS IO OFF
- 查看索引所占空间
exec sp_spaceused 'index'
- 创建索引视图
create view v_customer_sch_index with schemabinding as select Col1,Col2 from dbo.test go create unique clustered index cust_uniquetb on v_customer_sch_index(Col1) 注:索引视图创建的第一个索引必须是唯一聚集索引 强制走视图索引 select * from test with(noexpand)