MySQL 在索引列上使用不等于、is null、is not null、OR 查询无法使用索引

欣喜若狂
• 阅读 4655

使用不等于(!=或<>)时无法使用索引而使用全表扫描。

EXPLAIN SELECT * FROM staffs WHERE `name` != 'July';
EXPLAIN SELECT * FROM staffs WHERE `name` <> 'July';

使用 is null, is not null 时无法使用索引而使用全表扫描。

EXPLAIN SELECT * FROM staffs WHERE `name` is null;
EXPLAIN SELECT * FROM staffs WHERE `name` is not null;

使用 OR 做查询时无法使用索引而使用全表扫描。

EXPLAIN SELECT * FROM staffs WHERE `name` = 'July' OR `name` = 'Sumi';
点赞
收藏
评论区
推荐文章
Kevin501 Kevin501
4年前
常见SQL编写和优化
常见的SQL优化方式1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:selectidfromtwherenumisnul
Wesley13 Wesley13
3年前
MySQL千万级别优化·中
MySQL千万级别的查询优化手段·中单列索引(假设在v\_record表中存在id列的索引)1、WHERE条件使用​EXPLAINSELECT\FROMv\_recordWHEREid2​结论:利用索引进行回表查询2、SELECT字段使用
Wesley13 Wesley13
3年前
MySQL基础学习笔记——数据库优化(2):SQL查询优化
数据库优化SQL查询优化1.避免全表扫描,应该考虑在where及orderby涉及的列上建立索引;2.查询时使用select明确指明所要查询的字段,避免使用select(keys,flushdb等)的操作;3.SQL语句尽量大写,
Wesley13 Wesley13
3年前
mysql千万级大数据SQL查询优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:selectidfromtwherenumisnull可以在num上设置默认值0,确保表中num列没有
Wesley13 Wesley13
3年前
MySQL调优系列——如何提高MySQL的查询效率🔥
!(https://oscimg.oschina.net/oscnet/upd2e2544a2f9aafd9d615f75b2c647c660ff.png)1、对查询进行优化,避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2、避免在where子句对字段进行null值判断,否则会导致引擎放弃使用索引而进行全表扫描。
Wesley13 Wesley13
3年前
MySQL中 IS NULL、IS NOT NULL、!= 能用上索引吗?
看面试题的时候,总能看到MySQL在什么情况下用不上索引,如下:MySQL的WHERE子句中包含ISNULL、ISNOTNULL、!这些条件时便不能使用索引查询,只能使用全表扫描。不耽误大家时间,告诉大家结论:<fontcolor"5CACEE"MySQL中决定使不使用某个索引执行查
Wesley13 Wesley13
3年前
MySQL 常用30种SQL查询语句优化方法
1、应尽量避免在where子句中使用!或<操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。3、应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。如:selectidfromt
Wesley13 Wesley13
3年前
Sql优化技巧
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:selectidfromtwherenumisnull可以在num上设
Stella981 Stella981
3年前
SQLite里的正反向索引index使用问题记录
在SQLite里面似乎只要使用了正向或者反向索引关键字,查找的时候就无法使用索引了,比如:CREATEINDEX"idx_items"ON"items"("category_id"ASC);在使用如下语句查询的时候就会扫描全表SELECTid,titleFROMitemsWHEREcategory_id5;
Easter79 Easter79
3年前
SQLite里的正反向索引index使用问题记录
在SQLite里面似乎只要使用了正向或者反向索引关键字,查找的时候就无法使用索引了,比如:CREATEINDEX"idx_items"ON"items"("category_id"ASC);在使用如下语句查询的时候就会扫描全表SELECTid,titleFROMitemsWHEREcategory_id5;
Wesley13 Wesley13
3年前
Java面试通关要点汇总集之核心篇参考答案
核心篇数据存储MySQL索引使用的注意事项1.索引不会包含有NULL的列只要列中包含有NULL值,都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此符合索引就是无效的。2.使用短索引