`
lg___
  • 浏览: 2484 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

索引建立的原则

 
阅读更多
自己负责的项目最近跑的比较慢,主要是因为刚开始上线时数据量都不是很大,表都没有建索引,今天专门整理下,但究竟哪些字段该建索引,哪类型的表该建索引,这里面确实还有些学问,所以找了些资料,自己记录下。
建立索引常用的规则如下:
1、表的主键、外键必须有索引;

2、数据量超过300的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

   A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

   B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

   C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

   D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;

   E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响;

   以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充 分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引, 在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大
分享到:
评论

相关推荐

    数据库 创建索引 sql oracle

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

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

    例如,为了方便按创建时间和订单状态进行查询,可以在`ds_order`表中为`create_time`和`order_state`创建组合索引。 ```sql CREATE INDEX state_create_time_index ON ds_order(create_time, order_state); ``` ...

    索引优化原则及Oracle中索引总结

    Oracle索引建立原则  · 确定针对该表的操作是大量的查询操作还是大量的增删改操作。  · 尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。  · where语句中...

    数据库索引创建建议

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

    Oracle 创建索引的基本规则

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

    MySQL技术之索引.pptx

    下面将详细讨论索引的种类、创建原则以及如何有效地创建和利用索引。 1. **索引类型**: - **聚簇索引 (Clustered Index)**:在InnoDB存储引擎中,聚簇索引决定了数据行的物理存储顺序,主键值构成B+树的叶子节点...

    基于索引的SQL语句查询优化方法.pdf

    总的来说,这篇文章提供了一种实践导向的SQL查询优化方法,强调了用户在数据库优化中的责任,并提供了实用的索引建立原则,有助于提升数据库系统的整体性能。对于开发人员和数据库管理员来说,理解和应用这些方法...

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

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

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

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

    创建索引的作用利弊

    索引是在数据库表中的数据列上建立的一种数据结构,它能够加速数据检索的过程。通常使用的索引类型为B树或B+树,这两种结构的特点是能够确保数据的快速查找和插入操作。 **1.2 索引的作用:** - **提高查询速度:*...

    SQLSEVER索引和索引调整向导

    一般来说,选择创建索引的列时,可以参考以下的原则: * 在经常需要搜索的列上创建索引,加快搜索的速度。 * 在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构。 * 在经常用于连接的列上创建...

    索引的使用原则.pdf

    因此,创建索引时应遵循以下原则: 1. 选择性高的列适合创建索引。选择性是指列中不同值占总行数的百分比,选择性越高的列,其索引效率也越高。 2. 考虑查询模式,对于经常用于WHERE子句、JOIN条件、ORDER BY以及...

    Oracle 索引 详解

    * 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 * 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低...

    MySQL-数据库-索引详解

    索引设计原则 ---------------- ###惟一性索引的值是惟一的,可以更快速通过索引确定某条记录。 ###为经常需要排序、分组、联合操作的字段建立索引 ###为常作为查询条件的字段建立索引 ###限制索引的数目 索引...

    MySQL组合索引与最左匹配原则详解

    减少开销:假如对col1、col2、col3创建组合索引,相当于创建了(col1)、(col1,col2)、(col1,col2,col3)3个索引 覆盖索引:假如查询SELECT col1, col2, col3 FROM 表名,由于查询的字段存在索引页中,那

    数据库索引设计和优化

    在这个主题中,我们将深入探讨数据库索引的基础概念、设计原则、优化策略以及实际应用。 一、索引基础知识 索引是数据库系统为了加速查询而创建的数据结构,类似于书籍的目录,它提供了快速访问特定数据记录的途径...

    WEBHR9.0索引建立帮助文档.pdf

    文档主要涵盖索引的基本概念、创建原则以及针对WEBHR各业务模块的索引建议。 一、索引简述 索引的建立主要是为了加快数据检索速度,通过牺牲存储空间来换取查询时间的减少。然而,过多的索引会导致数据库维护成本...

    MySQL面试题(面试必问)

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

    mysql存储与索引技术

    在索引优化方面,最左前缀原则是一个关键概念,这意味着复合索引只能按照索引创建时列的顺序部分使用,例如,INDEX(A, B, C)可以用于 WHERE A = x 或 WHERE A = x AND B = y 的查询,但不能单独用于 WHERE B = y 或 ...

    索引

    复合索引的顺序很重要,因为它是左前缀匹配原则,即索引会按照列的顺序从左到右进行匹配。 此外,还有唯一索引(UNIQUE INDEX)和主键索引。唯一索引确保索引中的每一项都是唯一的,但允许有NULL值。主键索引则是表...

Global site tag (gtag.js) - Google Analytics