帮助中心 > 数据库 > 云数据库MySQL > 常见问题 > 为应用选择和创建最佳索引,加速数据读取

为应用选择和创建最佳索引,加速数据读取

在工作之中,由于SQL问题导致的数据库故障层出不穷,索引问题是SQL问题中常见的一种,例如:无索引,隐式转换,索引创建不合理。

使用没有创建索引的SQL访问数据库中的表时,系统会进行全表扫描。如果表的数据量很大,则扫描大量的数据,执行效率过慢,占用数据库连接,连接数堆积很快达到数据库的最大连接数设置,新的应用请求将会被拒绝导致故障发生。

隐式转换是指SQL查询条件中的传入值与对应字段的数据定义不一致导致索引无法使用。常见隐式转换如字段的表结构定义为字符类型,但SQL传入值为数字;或者是字段定义collation为区分大小写,在多表关联的场景下,其表的关联字段大小写敏感定义各不相同。隐式转换会导致索引无法使用,进而出现上述慢SQL堆积数据库连接数跑满的情况。

索引使用策略及优化

创建索引

1.在经常查询而不经常增删改操作的字段加索引。
2.order by与group by后应直接使用字段,而且字段应该是索引字段。
3.一个表上的索引不应该超过6个。
4.索引字段的长度固定,且长度较短。
5.索引字段重复不能过多。
6.在过滤性高的字段上加索引。

使用索引注意事项

1.使用like关键字时,前置%会导致索引失效。
2.使用null值会被自动从索引中排除,索引一般不会建立在有空值的列上。
3.使用or关键字时,or左右字段如果存在一个没有索引,有索引字段也会失效。
4.使用!=操作符时,将放弃使用索引。因为范围不确定,使用索引效率不高,会被引擎自动改为全表扫描。
5.不要在索引字段进行运算。
6.在使用复合索引时,最左前缀原则,查询时必须使用索引的第一个字段,否则索引失效;并且应尽量让字段顺序与索引顺序一致。
7.避免隐式转换,定义的数据类型与传入的数据类型保持一致。

免费拨打  400 100 2938 免费拨打 400 100 2938
24小时售后技术支持 24小时售后技术支持
返回顶部 返回顶部