代码编织梦想

1、适合创建索引的情况

1.1、字段数值具有唯一性的限制

  • 索引本身是具有约束作用的,比如创建唯一索引、主键索引
  • 在数据表中如果某个字段是唯一性的,可以创建唯一性索引或主键索引

在业务场景中具有唯一特性的字段,即使是组合字段也必须建成唯一索引
唯一索引对insert语句的损耗可以忽略不计,但提高查找速度是明显的

1.2、频繁作为where查询条件的字段

  • 某个字段在执行select语句的where条件中经常被使用到,那需要对该字段创建索引
  • 数据量大的情况下,创建普通索引可以大幅度提高查询效率

1.3、经常使用group by 和 order by 的列

  • 索引就是让数据按照某种顺序进行存储或检索,因此当使用 group by 对数据进行分组查询 或 使用 order by 对数据进行排序时,则需要 对分组或者排序的字段进行索引
  • 如果排序或分组的列有多个,可以在这些列上建立组合索引

1.4、update 、 delete 的 where条件列

  • 对于数据按照某个条件查询后在进行 update 或 delete 的操作,如果对于where 字段创建了索引,能大幅度提高检索效率
  • 如果进行更新时,更新的字段为非索引字段,提升的效率更加明显,因为非索引字段更新不需要对索引进行维护。

1.5、distinct 字段创建索引

1.6、多表 join 连接操作时,创建索引的注意事项

  • 连接表的数量尽量不要超过三张,每增加一张表就相当于增加了一次嵌套循环,数量级增长会非常快,严重影响查询效率。
  • 对where 条件创建索引
  • 对于连接的字段创建索引,并且该字段在多张表中的类型必须一致

1.7、使用列的类型小的列创建索引

  • 此处列的类型大小指 该类型表示的数据范围的大小
  • 数据类型越小,在查询时进行的比较操作越快
  • 数据类型越小,索引占用的存储空间越小,在同一个数据页中存放的记录越多,从而减少磁盘I/O带来的性能损耗

1.8、使用字符串前缀创建索引

1.9、区分度高(散列性高)的列适合作为索引

1.10、使用最频繁的列放到联合索引的左侧

1.11、在多个字段都要创建索引的情况下,联合索引优于单值索引

2、限制索引的数目

  • 单张索引数量不超过6个
    • 每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间越大
    • 所以会影响增删改语句的性能,表中数据更改的同时,索引也会进行调整和更新
    • 优化器在选择如何查询时会根据同一信息,对每个可以用到的索引进行评估,以生成一个最好的止执行计划,如果同时有多个索引都可用于查询,会增加MySQL优化器生成计划的时间,降低查询性能。

3、不适合创建索引的情况

3.1、在where中使用不到的字段,不要设置索引

  • 索引的价值是快速定位,不起到该作用的字段无需设置索引

3.2、数据量小的表最好不使用索引

  • 表中数据量级过小是否创建索引对查询效率的影响并不大。

3.3、有大量重复数据的列上不要创建索引

  • 该情况下创建索引可能会严重降低数据的更新速度

3.4、避免对经常更新的表创建过多的索引

  • 频繁更新的字段不一定要创建索引,因为在更新数据时还需要更新索引,如果索引过多,在更新索引的造成负担进而影响效率
  • 避免对经常更新的表创建过多的索引,并且索引中的列尽可能的少。虽然提高了查询速度,同时会降低表的更新速度。

3.5、不推荐以无序的值作为索引

3.6、删除不在使用或者很少使用的索引

  • 减少索引对更新操作的影响

3.7、不要定义冗余或重复的索引

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/badBoy_badMan/article/details/138926906

mysql - 索引设计原则-爱代码爱编程

索引设计原则 1. 代码先行,索引后上 应该根据主体业务的sql语句设计对应的索引。 2. 联合索引尽量覆盖80%的业务条件 比如可以设计一个或者两三个联合索引(尽量减少单值索引),尽量覆盖到where,order by, group by的字段,确保这些联合索引的字段尽量满足sql查询的最左匹配原则。 3.不要在小基数字段上建立索引 比如性别

MySQL 高级 - 索引 - 索引设计原则-爱代码爱编程

索引设计原则 ​ 索引的设计可以遵循一些已有的原则,创建索引的时候请尽量考虑符合这些原则,便于提升索引的使用效率,更高效的使用索引。 对查询频次较高,且数据量比较大的表建立索引。 索引字段的选择,最佳候选列应当从where子句的条件中提取,如果where子句中的组合比较多,那么应当挑选最常用、过滤效果最好的列的组合。 使用唯一索引,区分度越高,使

Mysql索引--01---索引的设计原则-爱代码爱编程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MySQL8.0索引新特性2.1 支持降序索引2.2 隐藏索引哪些情况适合创建索引1. 字段的数值有唯一性的限制2. 频繁作为 WHERE 查询条件的字段3. 经常 GROUP BY 和 ORDER BY 的列4. UPDATE、DELETE 的 WHERE 条件列5.

6-mysql原理-索引匹配原则_xianghan收藏册的博客-爱代码爱编程

索引知识 离散性最好的列: 越大离散型越好 count(distinct col):count(col) 理解为差异性。结论:离散性越高选择性就越好,比如有一个性别的字段的索引,假设男为1,女为0:就会生成一下一个索引树: 这个时候要搜索女的数据,那么在根节点触发,可以由两条路可以走,从中间走下去的话发现可以选择的线路太多了,这样会导致搜索引擎懵

mysql 索引设计原则_qq_42170897的博客-爱代码爱编程

目录 一、适合建立索引的情况 二、不适合建立索引的情况 三、索引失效的情况 一、适合建立索引的情况 1.字段具有唯一性(非unique),如学生学号。 2.频繁作为where条件的字段,尤其是数据量大的情况下。 3.经常group by和order by的列。因为group by是将相同的值放在一起,order by是排序,而索引树

mysql进阶-索引生效和设计的原则总结_兜兜转转m的博客-爱代码爱编程

本文是对索引学习的总结。 MySQL进阶-逻辑框架_兜兜转转m的博客-CSDN博客 MySQL进阶-存储引擎_兜兜转转m的博客-CSDN博客 MySQL进阶—索引1_兜兜转转m的博客-CSDN博客 MySQL进阶-sql执行时间的查询_兜兜转转m的博客-CSDN博客 MySQL进阶-详解索引失效_兜兜转转m的博客-CSDN博客 MySQL进阶-

mysql索引的设计原则_mysql索引原则-爱代码爱编程

目录 1. 选择唯一性索引 2. 为经常需要排序、分组和联合操作的字段建立索引 3. 为常作为查询条件的字段建立索引 4. 限制索引的数目 5. 尽量使用数据量少的索引 6. 数据量小的表最好不要使用索引 7. 尽量使用前缀来索引 8. 删除不再使用或者很少使用的索引 9. 代码现行,索引后上 10. where 与 Order by

js遇到需要正则匹配来修改img标签+清除行内样式-爱代码爱编程

方法一 var regex0 = new RegExp("(i?)(\<img)([^\>]+\>)", "gmi") //正则匹配表达式 this.newcontent = this.content.replace(regex0,"$2 style='display:block;margin: auto;width:120px;'

python学习-爱代码爱编程

核心代码 # 导入pandas库 import pandas as pd # 导入正则表达式包 import re # 指定Excel文件的路径,这个data.xlsx表为原始表,表内有40个sheet子表 file_p