文档详情

DB2之SQL优化浅析.pdf

发布:2017-05-24约7.02千字共23页下载文档
文本预览下载声明
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
显示全部
相似文档