如何优化 WHERE 子句?

简介: 如何优化 WHERE 子句?

1. 避免在 where 子句中使用!= 和 <> 进行不等于判断,这样会导致放弃索引进行全表扫描。

2. 避免在 where 子句中使用 null 或空值判断,会导致放弃索引进行全表扫描,尽量设置字段为 not null。

3. 避免在 where 子句中使用参数,会导致全表扫描

4. 避免在 where 子句中对字段及进行表达式或者函数操作,会导致存储引擎放弃索引进而全表扫描

5. 尽量使用 union all 代替 or,因为如果两个字段中有一个没有索引的话,引擎就会放弃索引进行全表扫描。

6. 尽量减少子查询,可以使用关联查询(left join,right join,inner join)替代子查询。

7. 尽量使用 exists、not exists 替代 in 或者 not in,因为会进行全表扫描。

8. 可以在 where 和 order by 涉及的列建立索引,从来提高查询效率。

9. 避免使用 SELECT *,按需求查找相关列。

相关文章
|
SQL 索引 数据库
使用instr 函数优化替换Like条件子句提高数据检索性能案例总结
使用instr 函数优化替换Like条件子句提高数据检索性能
1158 0
使用instr 函数优化替换Like条件子句提高数据检索性能案例总结
|
1月前
|
SQL
WHERE 子句
【11月更文挑战第02天】
24 1
|
4月前
|
SQL Serverless 数据库
HAVING和WHERE子句 有什么区别?
【8月更文挑战第2天】
167 17
HAVING和WHERE子句 有什么区别?
|
4月前
|
SQL 数据库
数据查询语句:包括SELECT语句、WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句等,用于从数据表中检索数据。
数据查询语句:包括SELECT语句、WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句等,用于从数据表中检索数据。
57 1
|
SQL 关系型数据库 数据库
10个高级SQL写法,包括窗口函数、联合查询、交叉查询、递归查询
10个高级SQL写法,包括窗口函数、联合查询、交叉查询、递归查询
219 1
|
缓存 关系型数据库 MySQL
子查询性能
子查询性能
110 0
|
数据库
FROM 子句
FROM 子句
65 2
WITH 子句
WITH 子句
114 1