CREATE [UNIQUE|CLUSTERED|NONCLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME) INCLUDE(INCLUDE_NAME)
一:描述
1.什么是索引:数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
2.分类:
唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)
主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)
聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引
3.创建索引的标准:用语频繁搜索的列;用语对数据进行排序的列
二:缺点:
1)索引会消耗物理存储空间内存
2)维护量大
3)新增、修改:索引还需要进行动态的维护
三:使用范围:
1.主键
2.外键
3.经常查询的数据
4.经常位于WHERE后的数据
5.出现在orderby/group by /distinct的数据
注意:
1:索引一般在3-5个
2:有时候查询内容不同就导致索引失效,合理的利用索引能在千万级的数据量中快速查询
经本人实验:大数据量中合理利用索引能达到秒级查询。当然这和数据库的表设计有一定关系。
如果在不知道建立什么索引最佳的,建议可以把常用的语句 用 执行计划(CTRL+L) 或者 数据库引擎优化顾问 进行 索引优化。
建议:在大数据量(百万级千万级)使用索引和表设计如无法达到优化效果 ,应该试试【分区】。