没有合适的资源?快使用搜索试试~ 我知道了~
数据库优化之让你的SQL运行得更快
3 下载量 83 浏览量
2020-03-04
11:16:57
上传
评论
收藏 44KB DOC 举报
温馨提示
试读
5页
在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高。SQL优化的实质就是在结果正确的前提下,用优化器可以识别的语句,充份利用索引,减少表扫描的I/O次数,尽量避免表搜索的发生。其实SQL的性能优化是一个复杂的过程,这些只是在应用层次的一种体现,深入研究还会涉及数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计。
资源推荐
资源详情
资源评论
数据库优化之让你的 SQL 运行得更快
人们在使用 SQL 时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略
了不同的实现 方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环
境中(如联机事务处理 OLTP 或决策支持系统 DSS)中表现得尤为明显。笔者在工作 实践
中发现,不良的 SQL 往往来自于不恰当的索引设计、不充份的连接条件和不可优化的
where 子句。在对它们进行适当的优化后,其运行速度有了明显地提 高!下面本文将从
这三个方面分别进行总结:
为了更直观地说明问题,所有实例中的 SQL 运行时间均经过测试,不超过1秒的均
表示为(< 1 秒)。
一、不合理的索引设计
例:表 record 有 620000 行,试看在不同的索引下,下面几个 SQL 的运行情况:
1.在 date 上建有一非个群集索引
select count(*) from record where date >
'19991201' and date < '19991214'and amount >
2000 (25 秒)
select date,sum(amount) from record group by date
(55 秒)
select count(*) from record where date >
'19990901' and place in ('BJ','SH') (27 秒)
分析:date 上有大量的重复值,在非群集索引下,数据在物理上随机存放在数据页
上,在范围查找时,必须执行一次表扫描才能找到这一范围内的全部行。
2.在 date 上的一个群集索引
select count(*) from record where date >
'19991201' and date < '19991214' and amount >
2000 (14 秒)
select date,sum(amount) from record group by date
(28 秒)
select count(*) from record where date >
'19990901' and place in ('BJ','SH')(14 秒)
分析:在群集索引下,数据在物理上按顺序在数据页上,重复值也排列在一起,因而
在范围查找时,可以先找到这个范围的起末点,且只在这个范围内扫描数据页,避免了大
范围扫描,提高了查询速度。
资源评论
weixin_38624975
- 粉丝: 5
- 资源: 907
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功