mysql哪些查询情况不走索引

mysql哪些查询情况不走索引

索引是MySQL中优化查询性能的重要手段。但并不是所有的查询都能走索引,以下列举了一些情况不走索引:

1. 使用函数对列进行操作

如果在查询中使用函数对列进行操作,MySQL将不会走索引。因为MySQL不能在索引中存储函数运算结果,而是需要先执行函数,然后再进行索引匹配,这个过程效率很低。

SELECT * FROM table WHERE DATE_FORMAT(create_time,'%Y-%m-%d')='2022-01-01';

在上面的示例中,因为使用了DATE_FORMAT函数对create_time列进行操作,MySQL将会进行全表扫描。

2. 不同类型的列进行比较

如果在查询中比较的列是不同类型的,MySQL将不会走索引。例如,如果将字符串类型的列与数字类型的列进行比较,MySQL将会对所有数据进行类型的转换,这样会影响查询效率。

SELECT * FROM table WHERE name=1;

在上面的示例中,如果name列是字符串类型,那么MySQL将会对所有的name值进行转换为数字再与1进行比较,这样会导致索引失效。

3. LIKE查询

如果在查询中使用了LIKE操作符,MySQL将会进行全表扫描,因此无法走索引。

SELECT * FROM table WHERE name LIKE '%abc%';

在上面的示例中,MySQL无法使用索引进行name列匹配,因为是用了LIKE操作符进行匹配。

4. 对索引列进行函数操作

如果在查询中对索引列进行函数操作,MySQL将会进行全表扫描,因此无法走索引。

SELECT * FROM table WHERE YEAR(create_time)=2022;

在上面的示例中,如果create_time列有索引,那么MySQL将会对所有数据进行YEAR函数操作,这样会导致索引失效。

总之,尽量避免在查询中使用函数、对不同类型的列进行比较、使用LIKE操作符和对索引列进行函数操作。这样能够有效提高MySQL查询的性能。

晓白博客网版权所有,原文地址https://www.xbnb.cn/6478
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 如有资源失效请在下面及时反馈,谢谢!! 抢沙发

请登录后发表评论

    请登录后查看评论内容