`
ybffnst
  • 浏览: 13748 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库建立索引的原则

阅读更多
数据库建立索引的原则
1,确定针对该表的操作是大量的查询操作还是大量的增删改操作。

2,尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。

3,尝试建立复合索引来进一步提高系统性能。修改复合索引将消耗更长时间,同时,复合索引也占磁盘空间。

4,对于小型的表,建立索引可能会影响性能

5,应该避免对具有较少值的字段进行索引。

6,避免选择大型数据类型的列作为索引。

索引建立的原则

索引查询是数据库中重要的记录查询方法,要不要进入索引以及在那些字段上建立索引都要和实际数据库系统的查询要求结合来考虑,下面给出实际中的一些通用的原则:

1. 在经常用作过滤器的字段上建立索引;

2. 在SQL语句中经常进行GROUP BY、ORDER BY的字段上建立索引;

3. 在不同值较少的字段上不必要建立索引,如性别字段;

4. 对于经常存取的列避免建立索引;

5. 用于联接的列(主健/外健)上建立索引;

6. 在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频度来确定;

7. 缺省情况下建立的是非簇集索引,但在以下情况下最好考虑簇集索引,如:含有有限数目(不是很少)唯一的列;进行大范围的查询;充分的利用索引可以减少表扫描I/0的次数,有效的避免对整表的搜索。当然合理的索引要建立在对各种查询的分析和预测中,也取决于DBA的所设计的数据库结构。

oracle 索引建立的若干原则

       我们首先要考虑的是数据量,数据量级别的不同,要考虑的问题有很大区别。几千条记录建不建索引其实都无所谓了,差个几豪秒也感觉不出来,但数据量一旦要增长到百万, 千万级别,索引的重要性就体现出来了。没有索引一个查询可能要几个小时甚至几天才能出来,对数据库的影响不仅仅是查询速度的降低, 在io 上的花费和对数据库连接资源的占用甚至会拖跨数据库。那么怎样建立索引,建立什么类型的索引呢,应该按照几个方面来考虑。

1. 先要了解业务需求,总结出应用会按照哪几个字段来进行查询。例如一个人员查询系统可能会按照(姓名,身份证件号码,性别,住址,民族等),当然可能是几个字段的组合查询。

2. 确定了第一步后要估计数据的分布。相同值有多少,是不是均匀。如姓名字段就会有大量的重复情况;性别可能只有两个值(1,2 分别代表男,女),民族会有56 个。

3. 确定索引的类型。选择性高的字段建立B- 树索引最好,如果数据量太大,可考虑把索引分区,在并发情况下通常会表现很好。相当于把一棵很大的B树拆开成了多棵小树。只有几个值的字段如性别并且数据分布比较均匀,查询的平均命中率要是非常高就不需要建立索引,否则可以建立位图索引(但会影响并发)。

oracle建立索引原则

索引需要平衡query和DML的需要,常用于(子)查询的表应建立索引;
把索引建到不同的表空间中;
用统一的extent大小:
五个block的倍数或者tablespace指定的MINIMUM EXTENT的倍数;
创建索引考虑用NOLOGGING参数,重建索引的时候也一样;
创建索引时INITRANS值应该比相应的table的值高一些;
对常用SQL语句的where条件中的列建立唯一索引或组合索引,组合条件查询中相应的组合索引更有效;
对于组合索引,根据列的唯一值概率,安排索引顺序;
如果一个列具有很低的数据基数,并且或者可具有空值,不应作为索引列;
如果where语句中不得不对查询列采用函数查询,如upper函数,最好建立相应函数索引;
对于低基数集的列,并包含OR等逻辑运算,考虑用Bitmap索引,对于从大量行的表中返回大量的行时也可以考虑Bitmap索引;
避免在有大量并发DML运算的表中使用Bitmap索引;
分享到:
评论

相关推荐

    数据库索引设计和优化

    选择性低的列不适合建立索引。 2. 索引维护:索引需要随着数据的增删改进行维护,因此要考虑操作频率和复杂度。 3. 分区索引:对于大数据量的表,可以通过分区将数据逻辑上分块,减少扫描的数据量,提高查询效率。 4...

    MySQL-数据库-索引详解

    ###为经常需要排序、分组、联合操作的字段建立索引 ###为常作为查询条件的字段建立索引 ###限制索引的数目 索引数目不是越多越好,每个索引都占用磁盘空间,索引越多,需要磁盘空间越多。修改表时,对索引的重构...

    经典数据库设计14个原则

    - **具体措施**:针对频繁访问的数据建立索引,优化数据库结构以减少数据冗余,并采用缓存技术提高访问速度。 #### 14. 数据库安全策略 - **安全措施**:包括但不限于用户权限管理、数据加密、审计日志等。 - **...

    数据库索引设计与优化

    1. 针对频繁查询的列创建索引:根据SQL语句的执行计划,找出最常用于查询的列来建立索引。 2. 平衡读写性能:在考虑索引数量时,需要平衡读取速度和写入速度,避免过度索引。 3. 复合索引:对于多条件查询,可以创建...

    mysql数据库设计原则

    - **按需创建索引**:不是所有的字段都需要建立索引。应根据查询需求和表结构来决定哪些字段应该被索引。 - **复合索引策略**:当一个查询涉及多个字段时,可以考虑创建复合索引以减少索引的数量,并提高查询效率。 ...

    数据库设计原则与技巧

    ### 数据库设计原则与技巧详解 #### 一、数据库设计原则概述 数据库设计是构建高效、稳定、可扩展数据存储系统的关键步骤。优秀的数据库设计不仅能提高数据管理的效率,还能确保数据的一致性和完整性,降低后期...

    oracle数据库索引与sql的优化

    - 如果WHERE子句中涉及到的列是经常排序或分组的列,则建立索引有助于加速查询过程。 - 对于SELECT、INSERT、DELETE、UPDATE等操作,合理使用索引可以提高其执行效率。 2. **SQL语句优化示例:** - 使用`NOT ...

    数据库建立索引的一般依据小结

    这是因为主键用于唯一标识每条记录,而外键确保了数据的参照完整性,它们在数据库操作中扮演着至关重要的角色,建立索引能够快速定位到相关记录,提高关联查询的速度。 其次,当数据量超过300条时,通常建议为表...

    面向程序员的数据库访问优化原则

    - **案例**:通过建立合适的索引结构,减少不必要的表扫描操作。 2. **返回更少数据(减少网络传输或磁盘访问)** - **原理**:减少数据传输量有助于减轻网络负载和磁盘压力。 - **方法**:选择性地检索所需列、...

    数据库设计原则优化数据库的设计

    本文将探讨一些核心的设计原则,旨在优化数据库的设计,提高系统的整体性能。 首先,简洁明了的命名规范至关重要。数据库、表和字段的命名应当清晰反映其用途,如使用公司简称加系统名称来命名数据库,如"BxxCRM"。...

    数据库设计原则14法则

    以下是关于“数据库设计原则14法则”的详细解析: 1. 原始单据与实体之间的关系:数据库设计时,需要考虑原始数据源(如业务表格)与实体表之间的映射。通常,一张原始单据对应一个实体,但也有特殊情况,如一对一...

    数据库建表原则-设计思想-查询优化

    ### 数据库建表原则详解 #### 一、原始单据与实体之间的关系 在数据库设计过程中,原始单据与实体之间的关系是理解数据结构的基础。根据业务需求的不同,这种关系可以表现为一对一、一对多或者多对多的形式。最...

    数据库索引设计与优化,数据库必学经典

    本节将深入探讨数据库索引的基础知识,设计原则以及优化技巧。 一、数据库索引的概念 索引是一种特殊的数据结构,用于加速数据表中记录的查找。它们类似于书籍的目录,允许数据库系统快速定位到所需的数据行,而...

    数据库C#,数据库设计,原则,基础

    本文将深入探讨数据库设计的基本原则和步骤,帮助理解如何构建一个有效的数据库。 首先,数据库设计的核心在于理解用户需求。在需求分析阶段,我们需要深入调查和分析用户的具体业务场景,了解他们对数据的使用方式...

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

    它通过分词技术建立索引,提高搜索效率。然而,全文索引的使用受到MySQL版本、存储引擎和字段类型的限制。例如,MySQL5.6之前,全文索引仅限于MyISAM引擎,而5.6之后的InnoDB引擎也开始支持。 除了创建索引,索引...

    数据库索引创建建议

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

    数据库设计的原则与技巧.pdf

    在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。 3. 避免长事务。对单个大表的删除或插入操作会带来大事务,较好的解决方法是,把整个事务分解成几个较小的事务,再由应用程序控制整个...

    数据库的索引

    - 应避免对经常发生变动的数据表建立索引,因为这些操作会导致索引频繁地被更新,从而影响效率。 - 如果数据量很小,例如只包含几条记录,那么可能并不需要创建索引,因为全表扫描的开销可能并不大。 实践部分介绍...

Global site tag (gtag.js) - Google Analytics