Sql优化(二) 关联(join)
当sql访问多个表时,关联对sql效率就有很重要的影响。关联要考虑两个因素,join的类型和join的次序。一、 JOIN的分类(一) Nested loop join1. 适用条件1)关联少量数据(rows),返回集小2)关联条件能高效访问第二张表(inner table)。高效访问的关联条件如'=',反之非高效的关联条件如'!=','>'等;inner table(即非驱动表)上要有索引。因此比较适合OLTP系统,因为OLTP系统中一般返回数据量小,而且表上面索引较多。[@more@]2. 实现步骤1) 优化器选择驱动表(driving table),指定其为outer table2) 指定另一张表为inner table(非驱动表)3)
SQL优化(一) 索引
对于sql的执行效率而言,有两个非常重要的因素,一个是索引,另外一个是关联(join)。绝大多数的sql性能问题和不当的索引和关联相关。本篇先说说索引。一、 索引类型1. B* tree index,即普通索引2. 位图索引3. Function based index函数索引其他索引还包括bitmap join index,应用索引等,很少使用。下面介绍这3种最常用索引。 [@more@]二、 B*tree index(一) 索引结构1. 索引结构包括branch block和leaf block(leaf nodes)。最上面的branch block称为root block。Leaf block(叶子节点)包含index key和rowid信息。Root block到leaf bloc