避免在where子句中使用!=或<>操作符

简介: 避免在where子句中使用!=或<>操作符

1、反例

SELECT * FROM user WHERE salary!=5000

 

SELECT * FROM user WHERE salary<>5000

2、理由

并不是说使用了is null或者 is not null就会不走索引了,这个跟mysql版本以及查询成本都有关;

如果mysql优化器发现,走索引比不走索引成本还要高,就会放弃索引,这些条件 !=,<>,is null,is not null经常被认为让索引失效;

其实是因为一般情况下,查询的成本高,优化器自动放弃索引的;

如果把null值,换成默认值,很多时候让走索引成为可能,同时,表达意思也相对清晰一点;

相关文章
|
编译器 C语言 索引
操作符详解下(非常详细)
操作符详解下(非常详细)
52 0
|
2月前
|
SQL
WHERE 子句
【11月更文挑战第02天】
25 1
|
5月前
|
SQL Serverless 数据库
HAVING和WHERE子句 有什么区别?
【8月更文挑战第2天】
184 17
HAVING和WHERE子句 有什么区别?
|
6月前
|
SQL 数据库
IN 操作符
【7月更文挑战第14天】IN 操作符。
42 10
|
7月前
|
编译器 C语言
操作符详解(1)
操作符详解(1)
42 0
|
7月前
|
索引
操作符,详细讲解
操作符,详细讲解
|
8月前
|
存储 程序员 C语言
操作符详解1(二)
该内容是一个关于C语言操作符和结构体的教程摘要。首先提到了加法操作符`+`的使用,并给出了一种不使用临时变量交换两个数的方法。接着讨论了如何计算整数的二进制表示中1的个数,通过位操作符实现。然后介绍了逗号表达式和函数调用操作符`()`,以及结构体成员访问操作符`.`和`-&gt;`,用于访问和修改结构体内的成员变量。文章以讲解结构体的声明、初始化和通过指针访问结构体成员为重点,展示了如何直接和间接地操作结构体数据。
59 0
|
8月前
|
编译器 索引
操作符详解3
操作符详解3
48 0
|
Linux C++ 索引
操作符详解(二)
操作符详解(二)
97 0
|
存储 编译器 C语言
7.27C语言知识点之操作符
7.27C语言知识点之操作符
68 0