`

索引的创建原则

阅读更多

索引的创建原则
基于合理的数据库设计,经过深思熟虑后为表建立索引,是获得高性能数据库系统的基础。而未经合理分析便添加索引,则会降低系统的总体性能。索引虽然说提高了数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。

是否要为表增加索引、索引建立在那些字段上,是创建索引前必须要考虑的问题。解决此问题的一个比较好的方法,就是分析应用程序的业务处理、数据使用,为经常被用作查询条件、或者被要求排序的字段建立索引。基于优化器对SQL语句的优化处理,我们在创建索引时可以遵循下面的一般性原则:

(1)为经常出现在关键字order by、group by、distinct后面的字段,建立索引。

在这些字段上建立索引,可以有效地避免排序操作。如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。

(2)在union等集合操作的结果集字段上,建立索引。其建立索引的目的同上。

(3)为经常用作查询选择的字段,建立索引。

(4)在经常用作表连接的属性上,建立索引。

(5)考虑使用索引覆盖。对数据很少被更新的表,如果用户经常只查询其中的几个字段,可以考虑在这几个字段上建立索引,从而将表的扫描改变为索引的扫描。

除了以上原则,在创建索引时,我们还应当注意以下的限制:

(1)限制表上的索引数目。

对一个存在大量更新操作的表,所建索引的数目一般不要超过3个,最多不要超过5个。索引虽说提高了访问速度,但太多索引会影响数据的更新操作。

(2)不要在有大量相同取值的字段上,建立索引。

在这样的字段(例如:性别)上建立索引,字段作为选择条件时将返回大量满足条件的记录,优化器不会使用该索引作为访问路径。

(3)避免在取值朝一个方向增长的字段(例如:日期类型的字段)上,建立索引;对复合索引,避免将这种类型的字段放置在最前面。

由于字段的取值总是朝一个方向增长,新记录总是存放在索引的最后一个叶页中,从而不断地引起该叶页的访问竞争、新叶页的分配、中间分支页的拆分。此外,如果所建索引是聚集索引,表中数据按照索引的排列顺序存放,所有的插入操作都集中在最后一个数据页上进行,从而引起插入“热点”。

(4)对复合索引,按照字段在查询条件中出现的频度建立索引。

在复合索引中,记录首先按照第一个字段排序。对于在第一个字段上取值相同的记录,系统再按照第二个字段的取值排序,以此类推。因此只有复合索引的第一个字段出现在查询条件中,该索引才可能被使用。

因此将应用频度高的字段,放置在复合索引的前面,会使系统最大可能地使用此索引,发挥索引的作用。

(5)删除不再使用,或者很少被使用的索引。

表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再被需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiehp/archive/2008/08/25/2826038.aspx

分享到:
评论

相关推荐

    数据库 创建索引 sql oracle

    本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面的知识点。 索引的概念和优点 ---------------- 索引是数据库表中一个或多个列的值的数据结构,用于快速定位和检索数据。创建索引可以提高...

    MySQL技术之索引.pptx

    2. **索引创建原则**: - 考虑查询频率高的列。 - 用于排序和分组的列应建立索引。 - 索引数量不宜过多,过多会影响INSERT、UPDATE和DELETE的性能。 - 使用组合索引,如(a,b,c),而不是单独的(a)、(a,b)。 - ...

    数据库索引创建建议

    ### 数据库索引创建建议 #### 一、深入理解索引结构 索引在数据库管理中扮演着极其重要的角色,特别是在处理大量数据时。合理的索引设计能够显著提高查询性能,减少系统的响应时间。本文主要探讨数据库中的两种...

    mysql高性能索引查询(查询性能问题、索引使用原则、索引创建、索引的优点缺点).docx

    #### 二、索引创建 ##### 1、单列索引 单列索引是最简单的索引类型,它仅包含表中的一个字段。这种类型的索引易于创建和使用,适用于那些频繁查询单一字段的情况。 例如,为了提高基于用户ID的查询效率,可以在`...

    Oracle 创建索引的基本规则

    选择创建B-Tree索引的原则** - **WHERE子句中的条件**: 在WHERE子句中频繁使用的列适合作为索引。 - **选择性高的列**: 选择性是指列中不同值的比例,选择性高的列能更有效地利用索引。 - **唯一性**: 如果某一列...

    MySQL面试题(面试必问)

    MySQL 面试题是 MySQL 面试中常见的问题,涵盖了 MySQL 的慢查询、索引、执行计划、聚簇索引和非聚簇索引、回表查询、覆盖索引、索引创建原则、索引失效等知识点。 1. MySQL 中如何定位慢查询? 可以使用 ...

    Mysql数据库索引创建、索引删除、索引失效场景详解

    使用时需遵循最左原则,即查询时应按索引列的顺序从左到右匹配。创建复合索引的方法与创建普通索引类似,只是涉及多个列。 5. 全文索引:用于解决大数据量的模糊查询问题。它通过分词技术建立索引,提高搜索效率。...

    第08章_索引的创建与设计原则.pdf

    MySQL 索引的创建与设计原则 索引是 MySQL 中一个非常重要的概念,它可以大幅度地提高查询速度和效率。在本章节中,我们将详细介绍索引的分类、创建、设计原则和优化方法。 1. 索引的分类 MySQL 的索引包括普通...

    创建索引的作用利弊

    ### 创建索引的作用及其利弊分析 在数据库管理与优化领域,索引是提升查询效率的重要工具之一。本文将从创建索引的作用出发,详细探讨其背后的技术原理、实际应用场景以及可能带来的利弊。 #### 一、索引的基本...

    数据库技术规范.docx

    本文档主要针对数据库的建表规范、使用范围、概述、书写规则、注释标准,以及不同数据库系统如Oracle、MySQL、SQL Server之间的差异,还有查询优化、索引创建原则、函数和表达式的使用限制等方面进行了详细阐述。...

    节 索引创建与使用PPT学习教案.pptx

    【索引创建与使用】是数据库管理中的重要概念,尤其对于提升数据检索效率至关重要。索引是一种特殊的数据结构,能够帮助数据库系统快速找到数据行,类似于书籍的目录,使得查找特定信息更为便捷。 5.1 索引概述中...

    Java大厂面试专题课-MySQL面试题-参考回答

    #### 索引创建原则 - **面试官提问**: 创建索引的原则有哪些? - **解答**: - 数据表中的记录数量达到一定规模(如10万条以上)时才考虑创建索引。 - 优先为经常作为查询条件、排序字段或分组依据的列创建索引。...

    数据库技术规范.pdf

    索引创建原则强调了索引不应过度使用,以免增加写操作的负担,同时应选择在查询条件中频繁出现的字段建立索引。此外,选择正确的索引类型(如B树、哈希索引)也非常重要。 在编写SQL语句时,避免使用可能降低索引...

    数据库复习1

    - **索引创建原则**:应在经常搜索、作为主键、外键、用于范围查询、排序和WHERE子句中的列上创建索引。 - **不适合索引的列**:很少使用的列、取值稀疏的列、text、image或bit类型的数据列,以及在修改操作远超...

    SQLSEVER索引和索引调整向导

    * 索引创建在表上,不能创建在视图上。 * 索引有两种类型,即聚簇索引和非聚簇索引。 * 聚簇索引与基表的物理顺序相同,非聚簇索引与基表的物理顺序不相同。 * 索引既可以直接创建,也可以间接创建。 * 可以在优化...

    深入解析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 ...

    挑战大厂50万年薪!阿里P7级别1-6轮JAVA架构师专家面试 挑战每秒10万并发轻松拿Offer

    - **索引创建原则**: 选择性高、频繁查询的字段。 - **索引下推技术**: 将部分查询条件推入存储层执行,减少网络传输量。 - **覆盖索引**: 通过一个索引包含所有查询字段,避免回表操作。 #### 查询优化 - **SQL...

Global site tag (gtag.js) - Google Analytics