mysql 索引列不能有函数 mysql有索引不走

导读:本文主要介绍mysql查询不走索引的原因及解决方法 。
1. mysql查询不走索引的原因:
(1)数据量太大 , 索引已经失去了优势 。
(2)查询条件中使用了不支持索引的函数,例如:like '%abc%',substring(),concat(),left(),right()等 。
(3)在where子句中使用了or或者not连接,此时mysql不会使用索引 。
(4)表中存在大量的null值,当查询条件中含有null值,mysql也不会使用索引 。
(5)索引列的数据类型不匹配 , 例如:索引列是int类型,查询条件中使用char类型 , mysql不会使用索引 。
2. 解决方法:
(1)避免使用不支持索引的函数,尽量使用=,>,<,>=,<=等操作符 。
(2)尽量避免使用or和not连接,改用and连接 。
(3)调整表结构,将null值替换为非null值,或者将null值放到一个独立的列上 。
(4)检查索引列的数据类型,并与查询条件中的数据类型保持一致 。
【mysql 索引列不能有函数 mysql有索引不走】总结:mysql查询不走索引的原因主要有数据量太大,查询条件中使用了不支持索引的函数,where子句中使用了or或者not连接,表中存在大量的null值,以及索引列的数据类型不匹配等 。解决的方法是避免使用不支持索引的函数,尽量使用and连接,替换null值,并检查索引列的数据类型,以保证查询条件中的数据类型与索引列的数据类型保持一致 。

    推荐阅读