非聚集索引:
1.创建索引时若未指定索引类型则默认为非聚集索引
2.每张表最多可以有249个非聚集索引
3.行的物理位置不按索引的顺序排序
4.只有查询在具有高度选择性的情况下,非聚集索引才有优势
5.一个索引可以多个字段来定义
聚集索引:
1.行的物理位置和行在索引中的位置是一样的
2.每张表只能有一个聚集索引
3.聚集索引可以提高大多数表的性能
4.对数据行的排序,方便查询
5.一个索引可以多个字段来定义
6.创建聚集索引时如果数据里面已经有重复值将不能使用IGNORE_DUP_KEY=ON属性
7.数据可以唯一也可以不唯一取决于是否使用unique属性,虽然数据可能不唯一但是系统会自动生成一个唯一字段并自动插入唯一数据。
8.如果未使用unique属性创建聚集索引,数据库引擎将自动添加一个四字节的unique列并自动向这个字段填充数据来确保每个值唯一,此字段和字段的值供内部使用,用户不能查看和访问。
9.没有限制聚集索引的列必须是not null,可以为null
主键:
1.唯一标识,插入重复数据时会报错
2.每张表只能有一个主键
3.确保数据的完整性
4.可以是一个或多个字段
5.主键的值不可以为空
6.主键的值应该是没有太大意义,永远不会被改变的
使用非聚集索引和聚集索引的场景: