`

db2索引设计准则

阅读更多
首先说一下索引的好处,这几天做了一个功能,写了一个存储过程当数据量是4000的时候,竟然跑了30分钟,加上索引并优化以后,只要了30s多一点,所以索引真的很重要,只要是where条件中用到的字段都是可以用作索引的。还有就是写sql语句一定要注意算法,有时算法的好与坏有非常大的影响。
1. 一个表如果建有大量索引会影响 INSERT、UPDATE 和 DELETE 语句的性能,因为在表中的数据更改时,所有索引都须进行适当的调整。另一方面,对于不需要修改数据的查询(SELECT 语句),大量索引有助于提高性能,因为数据库有更多的索引可供选择,以便确定以最快速度访问数据的最佳方法。
2. 组合索引:组合索引即多列索引,指一个索引含有多个列。一个组合索引相当于多个单列索引,如索引(ColA, ColB, ColC)至少相当于(ColA)、(ColA, ColB)、(ColA, ColB, ColC)三个索引。
2. 覆盖的查询可以提高性能。覆盖的查询是指查询中所有指定的列都包含在同一个索引(组合索引)中。例如,如果在一个表的 a、b 和 c 列上创建了组合索引,则从该表中检索 a 和 b 列的查询被视为覆盖的查询。创建覆盖一个查询的索引可以提高性能,因为该查询的所有数据都包含在索引自身当中;检索数据时只需引用表的索引页,不必引用数据页,因而减少了 I/O 总量。尽管给索引添加列以覆盖查询可以提高性能,但在索引中额外维护更多的列会产生更新和存储成本。
3. 对小型表进行索引可能不会产生优化效果,因为数据库在遍历索引以搜索数据时,花费的时间可能会比简单的表扫描还长。
4. 应使用 SQL 事件探查器和索引优化向导帮助分析查询,确定要创建的索引。为数据库及其工作负荷选择正确的索引是非常复杂的,需要在查询速度和更新成本之间取得平衡。窄索引(搜索关键字中只有很少的列的索引)需要的磁盘空间和维护开销都更少。而另一方面,宽索引可以覆盖更多的查询。确定正确的索引集没有简便的规则。经验丰富的数据库管理员常常能够设计出很好的索引集,但是,即使对于不特别复杂的数据库和工作负荷来说,这项任务也十分复杂、费时和易于出错。可以使用索引优化向导使这项任务自动化。有关更多信息,请参见索引优化向导。
5. 可以在视图上指定索引。
6. 可以在计算列上指定索引。
7. 避免在索引列上使用IS NULL和IS NOT NULL。避免在索引中使用任何可以为空的列,数据库将无法使用该索引。对于单列索引,如果列包含空值,索引中将不存在此记录;对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中。
8. 如果经常检索包含大量数据的表中的少于15%的行则需要创建索引。
9. 衡量索引效率的 95/5 规则:如果查询的结果返回的行数少于表中所有行的5%,则索引是检索数据的最快方法,如果查询的结果超过5%,那么通常使用索引就不是最快的方式。
10.主关键字和唯一关键字所在的列自动具有索引,但外部关键字没有自动索引。
二、索引的特征     在确定某一索引适合某一查询之后,可以自定义最适合具体情况的索引类型。索引特征包括:
●聚集还是非聚集 ●唯一还是不唯一 ●单列还是多列 ●索引中的列顺序为升序还是降序(索引缺省为升序,但目前多数大型数据库已经能够支持反向索引) ●覆盖还是非覆盖 ●还可以自定义索引的初始存储特征,通过设置填充因子优化其维护,并使用文件和文件组自定义其位置以优化性能。 ●位映射索引(bitmap)



索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段

考虑下面的建议来提高索引的性能
1在索引创建或重组时把INTRA_PARALLEL设为yes
2.定义大的utility堆栈
3尽量把表和索引放在不同的表空间
4. 及时地更新表和索引的统计信息
5.必要时,重组索引
6.对于内容快速变化的表,尽量用volatile类型
7.分析 EXPLAIN取得关于index使用状况的信息。对于在查询中不用的index,删除它
分享到:
评论

相关推荐

    DB2索引及其优化(设计,优化,问题分析,解答,举例)

    DB2索引设计及其优化是数据库性能优化的关键部分。索引可以确保数据的唯一性,提高查询性能,并减少磁盘I/O。然而,索引的创建和维护也需要遵守一定的准则,以避免对数据库性能产生负面影响。 概念 索引是一种特殊...

    数据库设计准则及方法论.docx

    本文档主要讨论了数据库设计的准则和方法论,涵盖了物理设计、对象设计、存储优化以及参数调整等多个方面。 首先,数据库物理设计是将逻辑设计转化为实际数据库结构的过程。根据逻辑设计,不同的数据库产品有不同的...

    深入解析DB2--高级管理,内部体系结构与诊断案例.part1.rar

    第8章 索引设计与优化 8.1 索引概念 8.2 索引结构 8.3 理解索引访问机制 8.4 索引设计 8.5 索引创建原则与示例 8.6 影响索引性能的相关配置 8.7 索引维护 8.8 DB2 Design Advisor(db2advis) 8.9 索引调整总结 第9...

    数据库设计准则及方法论终版.pdf

    - **方法二**:合理设计数据库对象,包括模型设计、表类型选择、索引设计、分区设计和表空间设计。例如,遵循第三范式以降低数据冗余,但在某些场景下为了性能考虑可以适当退化,例如使用冗余字段或合并表。 2. **...

    DB2维护手册.pdf

    - 调整应用程序或事务设计以避免死锁发生。 13. **对表和索引进行RUNSTATS** - **重要性**: 更新统计信息有助于优化查询计划。 - **操作方法**: - 使用`RUNSTATS`命令更新表和索引的统计信息。 - 根据实际情况...

    数据库设计:取得最佳性能的准则.docx

    数据库设计是确保应用...总之,数据库设计的性能准则和方法学强调早期规划、重点优化以及适配具体环境的物理设计。通过理解业务需求,合理设计数据库结构,结合DB2的特性,可以最大限度地提升z/OS环境下的数据库性能。

    Administration Guide: Performance DB2

    - 数据库设计:良好的数据库设计可以极大地提升查询效率和系统响应时间。 - 索引策略:合理的索引使用能够显著减少数据检索时间。 - 内存配置:正确的内存配置对于提高缓存命中率、减少磁盘I/O操作至关重要。 - ...

    DB2维护手册.doc

    #### 七、附:收集和更新统计信息的准则 统计信息是数据库管理系统优化查询计划的基础。定期收集和更新统计信息,确保查询优化器能够做出最佳决策。 #### 八、附:使用CLP捕获数据库运行状况快照 CLP(Command ...

    db2维护手册

    - **索引重组**: 解释索引重组的方法和重要性,确保索引的有效性和性能。 - **收集和更新统计信息的准则**: 提供关于如何有效收集和更新统计信息的最佳实践,以优化查询计划。 - **使用CLP捕获数据库运行状况快照**:...

    数据库设计与开发(北邮软件学院研究生讲义)-menu.docx

    关系模型不仅仅是一个抽象的概念,它还涉及到了一系列规则,比如列的同质性、第一范式、实体完整性等,这些规则是构建数据库时必须遵循的基本准则。为了让学生更好地理解这些规则,课程中引入了诸如CAP、SCT和HEC等...

    数据库培训文档超实用

    - **数据库性能调优**:针对数据库系统的性能问题进行诊断与优化,包括但不限于查询优化、索引调整、缓存策略等。目的是减少延迟,提升用户体验。 #### 三、数据库管理与维护 - **实体关系模型(ER Model)**:用于...

    Siebel 安装指南

    - **模块化设计**:软件由多个可选模块组成,其中可能包含用户未购买的模块,这反映了产品定制化的趋势,同时也提醒用户需确认自己拥有的模块权限。 - **美国政府使用限制**:对于美国政府机构使用Siebel软件有特别...

    MySQL数据库技术大全.docx

    1.4.1. 什么是范式:范式是关系数据库设计的基本准则,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。 1.4.2. 三大范式:1NF要求每个字段不可再分;2NF要求不存在部分依赖;3NF要求不存在传递依赖。 ...

Global site tag (gtag.js) - Google Analytics