sql server 索引
2021-06-29 本文已影响0人
Vergil_wj
为什么用索引
提高检索效率
类型
聚集索引:根据数据行的键值在表或视图中排序存储这些数据行,每个表只有一个聚集索引。聚集索引是一种对磁盘上实际数据重新组织以按指定的一列或多列值排序。
非聚集索引:具有独立于数据行的结构,包含非聚集索引键值,且每个键值项都有指向包含该键值的数据行的指针。
聚集索引类似于新华字典中的拼音索引,物理存储顺序。
非聚集索引类似于新华字典中的偏旁部首索引,逻辑存储顺序。
其它分类方式
按数据唯一性区分:唯一索引、非唯一索引。
按键列数区分:单列索引、多列索引。
创建索引的方式
- 通过显示的 create index 命令。
- 在创建约束时,作为隐含的对象。
主键约束(聚集索引);
唯一约束(唯一索引)
创建索引的语法
create [unique] [clustered | nonclustered] index <index name>
on <table or view name> (<column name> [asc | desc] [,...n])
- clustered、nonclustered:创建聚集、非聚集索引
举例:
select * from AccountInfo where AccountCode= '42010719950701'
这样的检索效率很低,给 AccountCode列增加一个索引,以便提高检索效率。
创建索引
create unique nonclustered index index_code
on AccountInfo(AccountCode)
索引查看(sys.indexes)
select * from sys.indexes where name = 'index_code'
删除索引
drop index index_code on AccountInfo
显示指定索引进行查询
select * from AccountInfo with(index = index_code)
where AccountInfo = '42010719950701'