索引适合建立情况和不适合建索引情况

哪些情况适合建立表索引?

1 主键自动建立唯一索引
2 频繁作为查询条件的字段应该创建索引
3 查询中与其它表关联的字段,外键关系建立索引
4 单键/组合索引的选择问题,who?(在高并发下倾向创建组合索引)
5 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
6 查询中统计或者分组字段

哪些情况不适合建立表索引?

1 Where条件里用不到的字段不创建索引
2 表记录太少(300w以上建)
3 经常增删改的表(提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件)
4 数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。(比如:国籍、性别)

 

ps:假如一个表有10万行记录,有一个字段A只有T和F两种值,且每个值的分布概率天约为50%,那么对这种表A字段建索引一般不会提高数据库的查询速度。

索引的选择性是指索引列中不同值的数目与表中记录数的比。如果一个表中有2000条记录,表索引列有1980个不同的值,那么这个索引的选择性就是1980/2000=0.99。一个索引的选择性越接近于1,这个索引的效率就越高

主键和唯一索引的区别?

1  主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。
2  主键创建后一定包含一个唯一性索引,唯一性索引不一定就是主键。
3  唯一性索引列允许空值, 而主键列不允许为空值。
4  主键可以被其他表引用为外键,而唯一索引不能。
5  一个表最多只能创建一个主键,但是可以创建多个唯一索引。
6  主键更适合那些不容易改变的唯一标识,如自动递增列,身份证号等。
7  在RBO 模式下,主键的执行计划优先级高于唯一索引。两者可以提高查询的速度

 

posted @ 2023-05-04 16:50  企业级理解  阅读(71)  评论(0编辑  收藏  举报