`
starbhhc
  • 浏览: 649766 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

DB2索引创建原则

 
阅读更多

      DB2索引实现是一个B+树,通过索引可以实现快速查询,避免全表扫描以此来减少IO操作。

     索引是对表数据的一种抽象,通过抽取有限数据,对数据的分布进行计算,以此来完成对数据的快速检索。

      创建索引需要注意的地方:

索引应该用来提高查询速度,但是会对更新和删除操作带来负面影响,因为要同步更新索引。所以索引应该创建到更新、删除相对比读取少的表上。

       索引需要独立的空间进行存储和管理。索引是需要磁盘空间来存储。所以避免重复创建冗余索引。如下:

CREATE TABLE TEST_IDX (COL1 INT NOT NULL, COL2 INT NOT NULL, COL3 IN NOT NULL)。CREATE INDEX TEST_IDX_IDX1 ON TEST_IDX (COL1, COL2, COL3)。

       已经有索引TEST_IDX_IDX1在三个列上,在创建

CREATE INDEX TEST_IDX_IDX2 ON TEST_IDX (COL1, COL2),这样的索引一般没有什么作用。

索引用来避免表扫描。通过索引对大量数据抽取有限部分,形成一个相对少量的有序数据结构,通过对有序数据结构的查找可以快速想要查找的数据。所以索引适合建立在数据量比较大的表上,而且该表上的查询经常是根据条件查询部分数据。比如一些系统基础表,如SYSTEM表,这些表数据量小,而且经常是查询全部数据,所以这些表上建立索引对性能的影响不是很大,完全可以避免,以免对管理造成影响。

         创建索引的目的还有一个就是保证数据唯一性,可以利用”CREATE UNIQUE INDEX <INDEX_NAME> ON <TABLENAME> (<COLNAME>)”,来完成。

主键会隐式创建索引,所以请不要在主键上创建索引浪费空间。

尽量减少索引的创建。DB2路径访问优化器会根据表中所提供的索引来完成尽可能多的访问路径的成本估计。创建过多的索引意味着DB2优化器生成更多的访问路径,完成更多的访问计划成本估算,这会增加SQL语句编译时间。

        创建唯一索引可以避免排序。因为索引是有序数据结构,在进行扫描时,DB2会默认按照顺序输出结果,而不是按照插入先后。通过创建唯一索引可以避免排序,提高查询性能。

具有大量重复数据的列上不要创建索引。在大量重复的列上创建索引没有任何意义。如下数据结构:表中字段col1有大量重复数据,其中的数据分布是按照90%的Y,和10%的N来分布。这样的列上创建索引没有任何意义。在查询条件为col1=‘Y’时,该表的索引扫描和表扫描没有特大差异。根据实践经验,列上的数据分布应该均匀,并且抽密度不能大于5 ‰。

 

        注意:在建表的时候可以指定索引的表空间,比如: create table tabname(...) in tabspace index in tabindexspace

分享到:
评论

相关推荐

    db2管理指南db2管理指南

    以上仅是DB2管理中的部分核心知识点,实际操作中还涉及更多细节和高级特性,例如内存管理、并发控制、数据库设计原则等。通过深入学习和实践,可以更好地驾驭DB2,为企业数据管理提供强大支撑。

    DB2常用命令,DB2 v8数据库基础

    学习DB2 v8数据库基础不仅包括命令行操作,还包括理解SQL语言、事务处理、存储过程、触发器、视图以及索引等概念。同时,掌握数据库设计原则,如第三范式(3NF),以及如何进行性能调优,都是成为DB2专家的必要步骤...

    DB2初级教程+培训资料

    DB2的数据库管理主要包括创建数据库、表空间、表、索引等对象。创建数据库时,你需要指定数据库名称、存储位置和存储类型。表空间是物理存储数据的逻辑单位,可以设置多个表空间以优化数据分布。在创建表时,你可以...

    DB2 developer guide

    2. **SQL编程**:DB2支持标准SQL以及其扩展,包括创建数据库对象(如表、视图、索引),数据查询,以及事务处理。开发者应熟悉DDL(数据定义语言)和DML(数据操纵语言)。 3. **存储过程和函数**:DB2允许创建...

    DB2基础学习教程,PDF文挡内容详细

    了解何时创建和使用索引,以及如何通过DB2的管理工具监控和调整索引,能有效优化数据库性能。 数据库安全性也是不容忽视的部分。DB2提供了用户权限管理,包括GRANT和REVOKE语句,用于控制用户对数据库对象的访问...

    DB2数据库程序开发试验

    - DB2_Task_08_01和08_02可能涉及数据库性能优化,如索引创建、查询优化和数据库调优技术。 通过这些任务,学生不仅可以掌握DB2数据库的基本操作,还能深入了解数据库设计原则、数据库安全、备份恢复策略等高级主题...

    DB2技术参考大全,

    事务处理是DB2的重要组成部分,它遵循ACID(原子性、一致性、隔离性和持久性)原则,确保数据的一致性。DB2支持四种事务隔离级别,可以根据业务需求选择合适的级别来平衡并发性和数据一致性。 备份与恢复是DB2管理...

    db2管理指南(计划)

    通过实际案例来展示如何应用上述原则和技术,可以帮助读者更好地理解DB2数据库设计和管理的实际操作方法。 #### 七、总结 DB2作为一款成熟的关系型数据库产品,在企业级应用中占据着重要的地位。通过对本文档的学习...

    DB2(730和731)中文教材

    1. 数据库基础:介绍数据库的基本概念,如关系模型、表、索引、视图等,以及如何在DB2中创建和管理这些对象。 2. SQL语言:详述SQL语句的使用,包括数据查询、插入、更新、删除,以及复杂的联接、子查询和集合操作...

    DB2 Performance In Development.pdf

    根据给定文件的信息,本文将深入探讨DB2在开发阶段的性能优化策略,重点围绕表优化、索引优化以及SQL优化三大核心方面展开。DB2作为IBM出品的一款高性能数据库管理系统,其性能优化对于确保应用程序的高效运行至关...

    DB2认证考试教材

    7. **性能调优**:包括索引的创建与管理,查询优化,以及数据库性能监控工具的使用。 8. **事务与并发控制**:理解ACID属性(原子性、一致性、隔离性、持久性),以及并发操作中的锁定机制。 通过阅读"DB2认证考试...

    DB2 731培训认证

    3. **数据库创建与管理**:掌握如何创建、修改和删除数据库,包括定义数据库模式、表、索引、视图和存储过程。理解事务管理、并发控制以及数据完整性约束。 4. **性能优化**:学习监控DB2性能的工具和方法,如db2...

    db2 基础知识培训ppt

    DB2遵循ACID(原子性、一致性、隔离性和持久性)原则,确保事务处理的可靠性。 DB2的数据模型主要基于SQL(结构化查询语言),它是访问和操作数据库的标准语言。通过SQL,我们可以创建数据库、定义数据表结构、插入...

    DB2与ORACLE常用语句对照

    - 索引创建:`CREATE INDEX`在两个系统中都可用,但Oracle支持更多的索引类型,如函数索引、位图索引等。 5. 存储过程和触发器: - Oracle和DB2都支持存储过程和触发器,但语法和处理方式有所不同。 - Oracle的...

    DB2通用数据库SQL教程

    这包括索引的创建与管理、查询优化器的工作原理以及如何调整数据库参数以提高查询速度。通过学习这些内容,你可以有效地提升数据库的运行效率,减少查询响应时间。 最后,教程可能还会涵盖数据库的监控和维护,包括...

    DB2认证730&731资料汇总

    9. **数据库设计**:理解数据库正常化原则,以及如何创建有效的索引和视图。 10. **数据库管理**:掌握如何进行空间管理,如表和索引的重建,以及如何进行内存和CPU资源的调整。 在"730_731"压缩包文件中,你可能...

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

    8.5 索引创建原则与示例 8.6 影响索引性能的相关配置 8.7 索引维护 8.8 DB2 Design Advisor(db2advis) 8.9 索引调整总结 第9章 DB2优化器 9.1 DB2优化器介绍 9.2 SQL语句执行过程 9.3 优化器组件和工作原理 9.4 ...

    DB2培训PPT

    DB2的数据管理涉及数据库的创建、删除和修改,以及表、视图、索引等数据库对象的管理。学习如何使用SQL语句(如CREATE DATABASE, DROP TABLE, ALTER TABLE等)进行数据操作,并理解存储过程和触发器的使用场景。 四...

    IBM DB2 SQL Reference

    - **Indexes**:探讨索引的设计原则和优化技巧。 - **Keys**:讲解不同类型的键(如主键、外键等)及其在数据库设计中的作用。 通过以上对《IBM DB2 SQL Reference》的部分内容分析,我们可以看出这是一份非常全面...

Global site tag (gtag.js) - Google Analytics