Mysql 字段类型与查询类型不一致导致索引使用失败

今天优化数据库的慢查询,有一条Sql让我百思不得其jie,就是他了。

SELECT * FROM test WHERE user_id=1;

explain 去分析一下

索引都有了,为什么还要扫描全表呢?类似的情况,有在哪闪现过,就去查看表结构,原来user_id这个字段是字符类型,做个记录,以免日后再犯傻。

以下是用不到索引的几种情况
  • 表字段用的字符串类型,查询的也应该是字符类型
  • LIKE 查询
  • 对字段进行NULL判断
  • 使用OR关键字查询,使用UNION代替OR
posted @ 2017-11-04 23:34  一目之秋  阅读(961)  评论(0编辑  收藏  举报