SQL优化的方式
2018-08-17 09:39:45来源:博客园 阅读 ()
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 子句中 不要使用 "*" , 练习测试时可以用
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:6.方法_EJ
下一篇:static的简单理解
- Spring Boot 实现定时任务的 4 种方式 2020-06-10
- JSP+SSH+Mysql+DBCP实现的租车系统 2020-06-09
- JSP+Structs+JDBC+mysql实现的诚欣电子商城 2020-06-08
- Caused by: java.sql.SQLSyntaxErrorException: Unknown col 2020-06-07
- Java中jar包获取资源文件的方式 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash