fagz

7.29 索引使用,索引的设计原则

索引的使用
单列索引和联合索引
单例索引:即一个索引只包含单个列。
联合索引:即一个索引包含了多个列。
在业务场景中,如果存在多个查询条件,考虑针对于查询字段建立索引时,建议建立联合索引,而非单列索引。

多条件联合查询时,MySQL优化器会评估哪个字段的索引效率更高,会选择该索引完成本次查询。

创造联合索引的时候,根据最左前缀法则,字段放置的位置是有影响的。
例:
create unique index idx_phone_neme on tb_user(phone,name);//phone,name的位置需要根据表的排列顺序。

索引的设计原则
1针对于数据量较大,且查询比较繁琐的表建立索引。
2针对于常作为查询条件(where),排序(order by),分组(group by)操作的字段建立索引。
3尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。
4如果是字符串类型的字段,字段的长度越长,可以针对于字段的特点,建立前缀索引。
5尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表查询,提高查询效率。
6要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响增删改的效率。
7如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它。当优化器知道每列是否包含NULL值,它可以更好的确定哪个索引最有效地用于查询。

总结
1索引概述
索引是高效获取数据的数据结构

2索引结构
B+Tree
Hash(只能接受精确匹配,不能接受范围查询)

3索引分类
主键索引,唯一索引,常规索引,全文索引,聚集索引,二级索引

4索引语法
create [unique] index xxx on xxx(xxx);
show index from xxxx;
drop index xxx on xxxx;

5SQL性能分析
执行频次,慢查询日志,profile,explain

6索引使用
联合索引
索引失效
SQL提示
覆盖索引
前缀索引
单列/联合索引

7索引设计原则

字段
索引

posted on 2025-07-29 17:41  fagz  阅读(24)  评论(0)    收藏  举报

导航