美文网首页
MySQL影响查询效率的因素

MySQL影响查询效率的因素

作者: 森林中大鸟 | 来源:发表于2020-07-01 20:34 被阅读0次
    1. 条件字段使用函数操作

    索引字段使用函数操作后,无法使用索引的快速定位功能(树搜索功能),但优化器并未放弃使用索引,优化器会对比索引字段与主键索引的大小,最终决定使用较小的所引树,进行全部遍历。
    例如:select * from tradelog where id + 1 = 10000 就会导致全表扫描。
    select * from tradelog where id = 10000 -1则不会导致全表扫描。

    实际工作中可使用其他方式对条件进行分割,或者union连接查询等操作避免条件字段使用函数。

    1. 隐式类型转换

    条件字段与参数类型不一致时,会发生转换
    转换原理: 字符串与数字比较时,会将字符串转换为数字。(id例外)

    例如:select ‘2’ > 1 相当于 select CAST(‘2’ AS signed int) 相当于是对条件字段使用类型转换函数,会导致全表扫描。
    select * from table where id = ‘2’相当于select * from table where id = CAST(‘2’ AS signed int) 不会导致全表扫描。

    实际工作中使比较的类型匹配即可。

    1. 隐式字符编码转换

    两个表关联查询时,两表中的字段字符集不一致,会发生类型转换。
    转换原理:按数据长度增加的方向转换,比如 utf8类型的与utf8mb4比较时,会将utf8向utf8mb4方向转换。
    遇到类似情况,最好的方式是修改为一致的编码集,如果表数据较多,且执行修改影响较大,可将编码类型长度更大的字段作为条件字段的驱动表(放在比较二者的左侧)可避免全表扫描。

    相关文章

      网友评论

          本文标题:MySQL影响查询效率的因素

          本文链接:https://www.haomeiwen.com/subject/gtghqktx.html