SQL优化的方式
Posted wusen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL优化的方式相关的知识,希望对你有一定的参考价值。
1.避免 字段 值为null ,尽量赋予默认值, 整数: 0 , 小数:0 , 字符: ‘‘
null值 无法 加入索引, 查询 null值时 无法 启用索引, 全表扫描
(个别特殊 需求下, 表中仍需要 null值)
2.尽量避免使用 不等于 : != 或 <>
不等 条件 无法 利用索引 进行检索 , 逐行扫表
(某些场景下, 不等条件 可能 无法避免)
3. 尽量避免使用 or 连接条件 , or 导致 扫描全表
替代方案 : union all
(1)union all : 将两个查询结果 联合 成 一个 查询结果集
查询语句1
union all
查询语句2 ;
注意: 两个查询语句 查询的 字段要一致
union all 只是 简单机械地将 两个结果集 合并成一个结果集 , 不会做去重
(2)union : 将两个 查询结果集 合并成 一个 查询结果集, 并去重(!!!!!!!)
(3)intersect : 获取 两个查询结果集的 交集 (union all 相当于并集)
查询语句1
intersect
查询语句2 ;
(4)minus(差集,减集)
查询语句1
minus
查询语句2 ;
第一个查询结果集 减去 第二个查询结果集
注意: 如果 第一个结果集 的内容 完全被 第二个结果集 包含, 则 差集结果 为 空
4. 慎用 in 和 not in , 会导致 全表扫描
如果 in中为连续数值, 可以用 between and 替代
5. 尽量在 where 子句中 少用 函数处理
6. 在业务 能够 满足的情况下, 少用 like 模糊查找 (实际项目中 很难避免 )
7. where 子句中, 尽量 避免 对 字段进行 算术运算 , 可以将字段的算术运算 转换为 条件值的运算 ,或直接 将运算结果写入sql
8. 子查询中, exists 性能高于 in
9. 索引 不要过多, 以免 增加 数据库数据改变时, 频发维护索引目录 造成的 负担
10. select 子句中 不要使用 "*" , 练习测试时可以用
以上是关于SQL优化的方式的主要内容,如果未能解决你的问题,请参考以下文章