`

SQL优化之建立索引一

阅读更多

基于索引的SQL语句优化之降龙十八掌 不指定

转自 尘封往事  

前言

客 服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服 务器断连、超时,严重影响业务的正常运行。因此,称低效的SQL语句为客服业务的‘恶龙’并不过分。数据库的优化方法有很多种,在应用层来说,主要是基于 索引的优化。本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引的SQL语句优化的降龙十八掌,希望有一天你能 用其中一掌来驯服客服业务中横行的‘恶龙’。

总纲 建立必要的索引

这 次传授的降龙十八掌,总纲只有一句话:建立必要的索引,这就是后面降龙十八掌的内功基础。这一点看似容易实际却很难。难就难在如何判断哪些索引是必要的, 哪些又是不必要的。判断的最终标准是看这些索引是否对我们的数据库性能有所帮助。具体到方法上,就必须熟悉数据库应用程序中的所有SQL语句,从中统计出 常用的可能对性能有影响的部分SQL,分析、归纳出作为Where条件子句的字段及其组合方式;在这一基础上可以初步判断出哪些表的哪些字段应该建立索 引。其次,必须熟悉应用程序。必须了解哪些表是数据操作频繁的表;哪些表经常与其他表进行连接;哪些表中的数据量可能很大;对于数据量大的表,其中各个字 段的数据分布情况如何;等等。对于满足以上条件的这些表,必须重点关注,因为在这些表上的索引,将对SQL语句的性能产生举足轻重的影响。不过下面还是总 结了一下降龙十八掌内功的入门基础,建立索引常用的规则如下:

1、表的主键、外键必须有索引;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

分享到:
评论

相关推荐

    数据库面试题索引sql优化

    - 对于频繁使用的JOIN操作中的关联列建立索引。 - 考虑使用复合索引来同时优化多个列的查询性能。 2. **减少全表扫描:** - 使用WHERE子句过滤记录,避免不必要的全表扫描。 - 使用适当的索引来加速查询。 3. ...

    数据库SQL优化大总结之 百万级数据库优化方案.pdf

    1. 在where及order by涉及的列上建立索引,以避免全表扫描。 二、数据库SQL优化之避免NULL值 2. 尽量避免在where子句中对字段进行NULL值判断,以免引擎放弃使用索引而进行全表扫描。 三、数据库SQL优化之避免!=和...

    SQL SERVER建立索引.pdf

    ### SQL Server 建立索引相关知识点 #### 一、建立索引 索引是在数据库表中的数据列上创建的一种特殊的数据结构,其目的是为了加快数据检索速度。索引类似于书籍的目录,通过索引可以快速定位到所需的数据行,从而...

    SQL Server 2000完结篇系列之七:SQL Server 2000索引优化详解

    - 索引维护:索引会增加写操作的开销,频繁更新的列不宜建立索引。 - 存储空间:索引需要额外的存储空间,应权衡性能提升与存储成本。 四、索引优化策略 1. 唯一性:索引的唯一性有助于提高查询效率,避免冲突。 2....

    收获,不止SQL优化--抓住SQL的本质1

    - **全书总结**:本书不仅是一本关于SQL优化的技术书籍,更是引导读者进入SQL优化世界的指南。通过丰富的案例、实战经验和深入的技术探讨,帮助读者建立起从宏观到微观的优化思路,并最终达到“爽”的境界。 - **...

    优化SQL Server索引的小技巧

    其中,优化数据库索引的使用是提高 SQL Server 性能的关键因素之一。在本文中,我们将讨论如何用 SQL Server 的工具来优化数据库索引的使用,并涉及到有关索引的一般性知识。 索引的类型主要有两种:clustered 索引...

    sql命令优化小窍门

    SQL 命令优化小窍门 SQL 优化是数据库性能优化的关键部分,好的 SQL 命令优化可以大大提高查询速度和数据库性能。在 SQL 命令优化中,索引的建立和使用非常关键。本文总结了一些常用的 SQL 命令优化小窍门,旨在...

    SQL优化-索引

    SQL优化中的索引是提升数据库查询性能的关键技术。索引可以理解为数据库中的一种特殊目录,帮助快速定位和访问数据。SQL Server提供了两种主要类型的索引:聚集索引(Clustered Index)和非聚集索引(Nonclustered ...

    《基于Oracle的SQL优化》PDF版本下载.txt

    通过对《基于Oracle的SQL优化》一书的学习,我们可以了解到SQL优化不仅是数据库管理员的基本技能之一,也是每个开发人员都应该掌握的重要知识。通过采用合适的方法和技术,我们可以在很大程度上提升数据库系统的整体...

    DB2之SQL优化浅析.pdf

    ### DB2之SQL优化浅析 #### 一、为什么要做SQL优化 在DB2数据库管理中,SQL优化是一项至关重要的工作。SQL语句是应用程序与数据库之间交互的主要方式,其性能直接影响到整体应用的响应速度及数据库服务器的负载。...

    索引的SQL语句优化

    **基于索引的SQL语句优化**是提升数据库查询效率的有效手段之一,它通过合理设计和利用索引,减少数据检索的时间消耗,从而提升整体系统性能。 #### 核心概念与原则 **降龙十八掌**,这里被比喻成18条关键的优化...

    sql优化、索引的建立和运用以及多表连接建索引的拙劣见解

    ### SQL优化、索引的建立和运用以及多表连接建索引的相关知识点 #### SQL优化概述 在数据库系统中,SQL语句的执行效率对于系统的响应时间和资源利用有着至关重要的影响。合理的SQL优化不仅可以显著提升查询速度,还...

    DB2之SQL优化浅析

    ### DB2之SQL优化浅析 #### 为什么要做SQL优化 在DB2数据库管理系统中,SQL语句是操作数据库的主要手段。任何应用程序对数据库的操作最终都会转化为SQL语句。因此,SQL语句的执行效率直接影响到数据库系统的整体...

    SQL Server的全文索引及优化.pdf

    SQL Server作为一款成熟的数据库管理系统,提供了全文索引功能,它使得用户能够对存储在数据库中的大量文本数据执行快速、准确的查询。全文索引是一项特别重要的技术,尤其在网络环境中,用户往往需要快速定位到相关...

    SQL Server 2000数据库中如何重建索引

    这时,重建索引就成为了一个必要的优化手段。 重建索引的主要目的是为了重新组织索引数据,特别是对于聚集索引,还包括实际的表数据。当数据在索引页中分布不均匀时,会导致磁盘I/O性能下降,因为获取请求数据可能...

    SQL Server 索引结构及其使用(聚集索引与非聚集索引)

    非聚集索引的缺点是查询速度较慢,但可以在多个列上建立索引。 何时使用聚集索引或非聚集索引?下表总结了何时使用聚集索引或非聚集索引: | 动作描述 | 使用聚集索引 | 使用非聚集索引 | | --- | --- | --- | | ...

    sql优化加索引[参考].pdf

    SQL优化是一个复杂的过程,其中加索引是提升数据库性能的有效手段之一。本文旨在探讨基于索引的SQL优化策略,通过一系列实践建议,即所谓的“降龙十八掌”,帮助开发者理解和应用索引优化,以解决系统性能问题。 ...

    MySQL性能优化 SQL优化方法技巧

    - 对于频繁查询的字段建立索引。 **2. 选择合适的数据类型** - 选择最适合数据特性的数据类型,以减少存储空间的使用并提高性能。 **3. 限制返回结果集** - 使用LIMIT关键字来限制查询结果的行数。 **4. 使用JOIN...

Global site tag (gtag.js) - Google Analytics