想不通,MYSQL使用LOWER/UPPER函数和不使用进行全模糊查询效率差不多

对表中code字段进行全模糊不区分大小写的查询,全模糊是不走索引的,字段不区分大小写查询可以将code列和查询参数转化为大写/小写进行模糊查询

mysq l版本 5.7
查询的code字段,字符集为utf8mb4,排序规则为 utf8mb4_bin

数据量:188万

sql1:全模糊查询 5.679秒

SELECT SQL_NO_CACHE
    * 
FROM
    TABLE
WHERE
    CODE LIKE '%TEST-3-000260%'

sql2:全模糊且字段转化为小写查询 5.334秒

SELECT SQL_NO_CACHE
    * 
FROM
    TABLE
WHERE
    LOWER( CODE ) LIKE '%test-3-000260%'

sql3:全模糊且字段转化为大写查询 5.298秒

SELECT SQL_NO_CACHE
    * 
FROM
    TABLE
WHERE
    UPPER( CODE ) LIKE '%TEST-3-000260%'

根据常理,都是全表检索,sql2和sql3还需要对每一行进行大小写转换,应该会更慢才对

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容