jinying8869 发表于 2016-11-14 09:08:11

DB2 索引优化准则收集

  一、DB2 索引优化准则
  1. 对于不需要修改数据的查询(SELECT 语句),大量索引有助于提高性能
  2. 组合索引:组合索引即多列索引,指一个索引含有多个列。一个组合索引相当于多个单列索引,如索引(ColA, ColB, ColC)至少相当于(ColA)、(ColA, ColB)、(ColA, ColB, ColC)三个索引。
  3. 覆盖的查询可以提高性能。覆盖的查询是指查询中所有指定的列都包含在同一个索引(组合索引)中。
  4. 对小型表进行索引可能不会产生优化效果
  5. 应使用 SQL 事件探查器和索引优化向导帮助分析查询,确定要创建的索引。为数据库及其工作负荷选择正确的索引是非常复杂的,需要在查询速度和更新成本之间取得平衡。
  6. 可以在视图上指定索引。
  7. 可以在计算列上指定索引。
  8. 避免在索引列上使用IS NULL和IS NOT NULL。避免在索引中使用任何可以为空的列,数据库将无法使用该索引。对于单列索引,如果列包含空值,索引中将不存在此记录;对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中。
  9. 如果经常检索包含大量数据的表中的少于15%的行则需要创建索引。
  10. 衡量索引效率的 95/5 规则:如果查询的结果返回的行数少于表中所有行的5%,则索引是检索数据的最快方法,如果查询的结果超过5%,那么通常使用索引就不是最快的方式。
  11.主关键字和唯一关键字所在的列自动具有索引,但外部关键字没有自动索引。
  二、索引的特征    在确定某一索引适合某一查询之后,可以自定义最适合具体情况的索引类型。索引特征包括:
  ●聚集还是非聚集●唯一还是不唯一●单列还是多列●索引中的列顺序为升序还是降序(索引缺省为升序,但目前多数大型数据库已经能够支持反向索引)●覆盖还是非覆盖●还可以自定义索引的初始存储特征,通过设置填充因子优化其维护,并使用文件和文件组自定义其位置以优化性能。●位映射索引(bitmap)
  三、IBM DB2数据库索引优化策略
  2、将比较大的表建在多节点的表空间上,同时建好索引
  说明:现有的db2数据仓库每个节点使用2个CPU,4G内存,DIM表空间计划是存放维表的表空间,因此是单节点的。在使用这个表空间的中的表的时候,最多只会用到2个CPU,4G内存,加上其他的表空间也都要用到这两个CPU和这4G内存,因此资源比较有限。建议较大的表不要放在这个表空间中,而是建立好分区键,放在多节点的表空间中,这样检索这个表的时候32个节点同时检索,最后汇总到0节点上进行展现,速度当然会非常的快。另外,虽然32节点并行性好,但是如果建立好索引的话,速度会更快!!
  6、关于左关联的一点使用心得
  在on的条件里面尽量的只写关联条件和对左关联的表作限制,而对主表的限制不要写在这里。如果写在里面的话,不但速度非常慢,而且可能会出现莫名其妙的结果。
页: [1]
查看完整版本: DB2 索引优化准则收集