首先说一下索引的好处,这几天做了一个功能,写了一个存储过程当数据量是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数据库中自带的db2advis索引分析器使用简述
DB2索引设计及其优化,并对常见的数据库索引问题进行分析,解答。包括索引失效,针对不同情况该如何建立索引,建立怎样的索引等等····
使用db2top和db2advis生成索引建议
DB2数据库的索引调优,保证大家看了不觉得后悔
DB2 for zOS DB2 数据库设计取得最佳性能的准则
本文介绍了在 DB2 上对不同的表的索引做 rename index 操作时,出现的 EOT 类型锁等待问题的分析和解决办法
DB2数据库设计和最高性能原则
DB2数据库设计与性能优化,关于db2性能优化的最佳方案
调整索引设计 32 最佳实践 33 数据库事务日志 35 配置事务日志 36 镜像日志路径 36 数据和索引压缩 37 最佳实践 37 数据和索引压缩 39 行压缩 39 索引压缩 43 最佳实践 44 查询设计 45 OL TP 工作负载查询 45 隔离...
资源名称:DB2数据库设计资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
网上很不错的,DB2缓冲池和索引调优的方法
│ │ 第8周 DB2索引优化.mp4 │ └ 第8周 DB2索引优化.pdf ├ 第09周 SQL语句调优 │ │ 第9周 SQL语句调优.mp4 │ └ 第9周 SQL语句调优.pdf ├ 第10周 DB2设计最佳实践 │ │ 第10周 DB2设计最佳实践.mp4 │ └ ...
DB2数据库主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。 DB2数据库提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的...
第一章 绪论 1.1课题简介 1.2设计目的 ...5.1 索引的建立 5.2 表空间的建立 第六章 数据库的实施 6.1系统实验要求 6.2触发器的设计 6.3表的建立与数据的载入 6.4 数据库的运行 总 结 参考文献
db2常用命令大全 EXPORT TO D:\PRINTXML.IXF OF IXF 近一年来在项目开发中使用到了IBM的DB2 9.1的数据库产品,跟Oracle相比一些命令有很大的区别,而它最大的功能是支持 xml存储、检索机制,通过XPath进行解析...
Share Disk ExaData 方法二:合理设计数据库对象 合理设计对象是数据库的逻辑概念,其设计的好坏除了决定系统功能,有时还会决定系统的性能,其设计主要包括模型的设计,表类型的选择,索引的设计,分区设计,表空间...
DB2数据库设计与性能优化原理、方法与实践.pdf(电子文档版)
超级友情大放送啊! DB2_SQL应用调优-解释工具db2expln的使用及实例分析 DB2_笔记大全_IBM Db2_日常实用操作积累-部分 db2expln_监控DB2活动 db2常用命令大全 DB2函数大全 DB2索引的设计与优化--批注
用于DB2数据库的 好用的 查询分析器,带有自动补充字段名 补充表明 记忆上次脚本功能。
DB2性能优化 DB2性能优化 DB2性能优化 DB2性能优化