关于如何建立索引,及哪些情况适合使用索引,哪些情况不适合使用索引,各种书籍资料有很多。
但是最重要的原则是:实际测试。
实践是检验真理的唯一标准。建立索引的时候,应进行如下测试:
1 explain select语句,看看是否有使用到索引。
2 运行update和insert操作,看看建立索引的负效应是否在可接受范围。
3 务必在接近生产环境的数据规模下进行索引性能的测试。
第三点尤为重要。
因为在最近的项目优化过程中,发现:
在某个字段上建立了索引之后,如果是select返回30条记录,建立索引之后,select时间降到原来的1/6。提高很明显。
而在生产环境下,这个select需要返回的结果通常是上千(甚至上万的),建立索引之后,select的时间反而增加了快一倍。因此建立索引反而适得其反。
分析后觉得可能的原因如下:
1 该字段建立索引之后,基数并不高,也就是该字段的重复率较高,索引对性能的提升不明显。简单说,比如一个字段是:性别,只有男女两种情况,那建立索引完全没必要,反而降低了性能。
2 该select要返回的结果集很大(超过了1000条记录)。在这种情况下,mysql先查询索引,而后根据索引到表中取得记录,这个操作在需要取得的记录非常多的情况下,非常耗时。最终导致了:建立索引之后,select时间反而增加的情况。
这次的主要原因是2. 因为还进行了如下测试:如果该select语句只返回30条记录,建立索引之后,select时间为原来的1/6。
建立索引要注意的地方很多,最重要的原则还是:实际测试。
分享到:
相关推荐
为了提高 DSO 的查询效率,建立索引是非常必要的。 索引是一种数据结构,它可以快速地定位特定的数据记录。通过建立索引,可以减少数据扫描的时间,从而提高查询效率。在 SAP BW 中,索引可以被建立在 DSO 的表字段...
"数据库查询速度优化 建立索引" 数据库查询速度优化是数据库管理中非常重要的一方面。快速的查询速度可以提高用户体验,提高系统的整体性能。索引是数据库查询速度优化的重要手段之一。索引是一种特殊的目录,可以...
### Lucene对XML文档建立索引的技术解析与实践 #### 一、引言 随着互联网技术的迅猛发展,非结构化数据(如XML文档)在企业和组织中的应用日益广泛。如何高效地处理这些非结构化的数据,特别是进行快速检索成为了一...
### SQL Server 建立索引相关知识点 #### 一、建立索引 索引是在数据库表中的数据列上创建的一种特殊的数据结构,其目的是为了加快数据检索速度。索引类似于书籍的目录,通过索引可以快速定位到所需的数据行,从而...
在IT行业中,实时建立索引的架构是一种关键的技术,特别是在大数据和搜索引擎领域。这个主题涉及到如何高效、实时地处理和索引大量数据,以便进行快速的查询和分析。以下是对"实时建立索引的架构"的详细解释: 一、...
在IT领域,尤其是在文本搜索和信息检索中,"分组"和"建立索引"是两个非常关键的概念。本文将详细探讨这两个主题,特别是在Lucene.NET框架中的应用,以及如何结合盘古分词法实现高效的文本处理。 首先,让我们了解...
标题中的“行业分类-设备装置-一种建立索引的方法及装置”表明了这个技术文档主要涉及的是信息技术领域中,设备装置部分的一种特定的索引构建技术。这种索引方法可能是为了提高数据检索效率,尤其在大数据量或者复杂...
正确地建立索引可以大大提高数据库的查询效率和性能。 在本文中,我们将详细介绍如何为MySQL数据库建立索引,包括单字段索引、多字段索引、组合索引和ORDER BY索引等。同时,我们还将介绍使用EXPLAIN命令来测试...
**使用Lucene对数据库建立索引及搜索** Lucene是一个高性能、可伸缩的信息检索库,它是Apache软件基金会的顶级项目之一。它提供了一个简单但功能强大的API,用于在各种数据源上创建全文搜索引擎,包括数据库。在本...
Lucene结合Sql建立索引Demo源码 Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的...
**Lucene 建立索引与查询指南** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它提供了高效、可扩展的搜索功能,被广泛应用于各种项目和产品中。本指南将详细介绍如何使用 Lucene 创建索引以及...
oracle数据库中如何建立索引,建立索引有什么优势,索引该如何使用
Nutch 是一个开源的网络爬虫项目,主要用来抓取互联网上的网页并建立索引,为信息检索提供基础。对于初学者来说,它是一个很好的平台,可以深入了解搜索引擎的工作原理并动手实践。 ### 1. 系统架构 Nutch 的系统...
LaTeX论文写作教程-建立索引及文献引用 LaTeX是一种基于TeX的排版系统,用于创建高质量的科技文档,如学术论文、书籍、报告等。与传统的字处理软件(如Word)相比,LaTeX具有以下优势: 专业排版:LaTeX提供了丰富...
在建立索引时,Lucene会对输入的文档进行分析,将其拆分成一个个的词汇,并为每个词汇创建一个倒排表,记录该词汇出现在哪些文档以及在文档中的位置信息。lucene-core-3.0.0.jar是Lucene的核心库,包含了构建和查询...
Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个...本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 支持简单的中文分词,同时提供了Lucene.Net-2.0-004版本的源码给大家
总的来说,为MySQL数据库建立索引是一个涉及性能优化的关键环节。正确地设计和使用索引可以大幅提升查询效率,减少数据库服务器的负载,进而提高整体系统性能。但同时,索引也会占用存储空间,并在插入、更新和删除...
本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 【该源码由51aspx提供】 源码 " onerror="this.src='/images/ifnoimg.gif'" src="/uploads/allimg/090904/1039152O5-0.jpg...