前言1:我会结合mysql和mssql来写。虽然是不同的数据库,但是二者索引的本质是一样的。
前言2:业务系统大多数时间无非动态条件+排序+查找,如何提升排序查找效率乃重中之重
前言3:程序猿的救命稻草——创建索引
如果你对前言的内容感兴趣(怎么会有兴趣呢,很痛苦好吧。。。)不过为了将来
升职加薪,当上总经理,赢取白富美,走上人生巅峰
请继续往下看吧
一 索引的概念
1 索引的定义
不需要太多术语,就一句话:快速查找&有序的数据结构
堆表不保证有序
2 聚集索引和非聚集索引
聚集索引Clustered Index
1 列可以有重复值。
2如果主键默认做聚集索引,则符合唯一约束.
3索引组织表是有序的,堆表是无序的。
4只能有一个
5mysql的表就是一张索引组织表,若无主键,InnoDB engine会自动创建一个6字节(48bit)列作为主键。mssql则不会
6当select * 的时候,检索最快,因为叶子节点有全部的数据
非聚集索引NonClustered Index
1叶子节点上保存二个信息:索引字段值,对应聚集索引键值(无聚集索引,则是数据位置的指针)
2select * 浪费性能,需要标签查找。select 非聚集列 则最快复制代码
快问快答——
主键和聚集索引有什么区别?miemiemie~~
3 索引在执行计划中的术语
结构SCAN