- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DB2之SQL优化浅析
DB2之SQL优化浅析
白德全
西南区中心团队青海PSO
目录
为什么要做SQL优化
SQL优化建议
典型SQL案例
SQL语句对数据库的影响
1、SQL语句是操作数据库的唯一途径,任何应用程
序对数据库的操作最终都会归结为SQL语句对数据
库的操作
2、SQL语句的执行效率对数据库系统的性能起到了
决定性作用
3、据统计SQL语句几乎消耗了70%~90%的数据库
资源
4 、SQL语句的不同写法在性能上的差异可能很大
我们的应用几乎全都是SQL
SQL优化的意义
数据库资源是有限的,任何一条SQL语句的执
行都需要消耗一定的数据库资源(CPU、MEM、
I/O), 良好的DB2 SQL语句可以被数据库重复使
用从而减少分析时间、改善一个系统的性能、对提
高数据库内存区的命中率、减少I/O访问等有着非常
重要的意义。
优化的目的:
1、提升执行效率
2、减轻数据库开销
目录
为什么要做SQL优化
SQL优化建议
典型SQL案例
SQL优化的原则
1、尽量减少数据库查询次数,减少对数据资源的请
求次数
2、尽量使用索引,避免全表扫描,提升检索效率
3、尽量避免多表关联以及子查询的使用,一切从简
目标:减少SQL复杂度,提高效率,只要够快,咋
走都行~~
SQL优化方法
• 合理的设置分区键
1.建表时必须明确指明表空间/索引表空间
2.建表时必须指明分区键partitioning key,注意分区键的选择应当尽量使
用值域大、值分布均匀的字段,比如phone_no等
Create table tab_name(
col1 int,
col2 varchar(10)
) partitioning key(col1) in tbs_store index in tbs_idx not logged initially
3.可使用如下语句察看表数据是否分布均匀:
select
nodenumber(phone_no),
count(*)
from tmp1_vgrp_inet_call
group by nodenumber(phone_no)
SQL优化方法
• 合理的使用索引
1. 基于效率问题来考虑使用索引,索引字段的选择应当是在
where子句中的关联字段
2.大量数据插入表时,如果该表已经建立了索引,效率会降
低(但不会太明显)
3.索引的创建也会增加sql的总体执行时间,因此需要平衡总
体的耗时,比如如果该表会多次使用,则倾向建立索引
4.如果表本身就需要全表扫描,则可以不建立索引
5.当发现某些sql执行时间很长时,应当考虑索引的使用
6.在关联字段一般为联合字段的情况下应当使用复合索引,
否则更倾向于各个关联字段建立各自的索引
SQL优化方法
• 合理的使用表连接
1. 数据量小的表作为左表(当然在业务逻辑允许的情况下)
2. 将使用条件筛选的表作为左表
3. 具有索引选择操作的表作为左表,否则每扫描左表中的一
行,就要扫描一遍整个表
4. 重复记录少的表更趋向于作左表
5. 外关联时,on后面仅仅存放关联条件,对于关联表内部的
条件应当放在where子句中
SQL优化方法
• 有效利用执行计划
1.通过查看sql执行计划,可以得到该sql的成本消耗,对sql
的优化可以成为重要的参考信息
db2expln -d db_name -u user_n
文档评论(0)