DB2 LUW SQL 调优指南
2010-02-04 00:00:00 来源:WEB开发网核心提示: 合并连接需要一个等式连接谓词,它要求根据连接列对输入表进行排序,DB2 LUW SQL 调优指南(7),通过扫描现有索引或在进行连接之前对表进行排序就可以做到这一点,在合并连接中,下面的查询,select*fromT1,T2,T3whereT1.c1=T2.c1andT2.c2=T3.c2and
合并连接需要一个等式连接谓词。它要求根据连接列对输入表进行排序。通过扫描现有索引或在进行连接之前对表进行排序就可以做到这一点。在合并连接中,同时扫描两个表,以查找匹配行。外表和内表都只扫描一次,除非外表中有重复的值。优化器通常选择重复值较少的表作为外表。合并连接适合内外输入表都已经是按连接列排好序的情况。
散列连接是做大数据集连接时的常用方式。优化器使用两个表中较小的表利用连接列在内存中建立散列表,然后扫描较大的表并探测散列表,找出与散列表相匹配的行。散列连接需要一个或者多个等式连接谓词,其中每个谓词中的列类型和长度相同。散列连接可以显著的提高某些查询的性能,在 OLAP 系统中尤为突出。散列连接的性能优势之一是它不要求预先进行任何排序,而排序的成本是很高的。散列连接的关键是能够将所构建的表尽可能多的放入内存,这些内存缓冲区来自 Sort Heap,所以 Sort Heap 的大小对是否选择散列连接是非常重要的。散列连接适合于内表可以放入内存,并且没有排好序的情况。
根据被连接的两个表的大小,连接谓词,表上的索引和排序状况,以及每种连接的特点可以确定最优的连接方法。我们查看计划树时,要注意其中的每个连接节点是不是最优的,如果不是要想办法让 DB2 选择最优的连接方法,如创建索引,增加 Sort Heap,增加等式连接谓词等。
2. 连接顺序
连接的顺序对效率的优化也至关重要。连接的顺序直接影响执行查询时的 I/O 次数和 CPU 代价。比如,下面的查询,
select * from T1, T2, T3 where T1.c1 = T2.c1 and T2.c2 = T3.c2 and T1.c3 = T3.c3
如果采取下面的顺序将三表连接,假如三表都只有 1000 个记录,
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接