Mysql 字段类型与查询类型不一致导致索引使用失败
今天优化数据库的慢查询,有一条Sql让我百思不得其jie,就是他了。
SELECT * FROM test WHERE user_id=1;
用explain 去分析一下
索引都有了,为什么还要扫描全表呢?类似的情况,有在哪闪现过,就去查看表结构,原来user_id这个字段是字符类型,做个记录,以免日后再犯傻。
以下是用不到索引的几种情况
- 表字段用的字符串类型,查询的也应该是字符类型
- LIKE 查询
- 对字段进行NULL判断
- 使用OR关键字查询,使用UNION代替OR