`
#rethink#
  • 浏览: 46934 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

如何建立索引

阅读更多

关于如何建立索引,及哪些情况适合使用索引,哪些情况不适合使用索引,各种书籍资料有很多。

但是最重要的原则是:实际测试。

实践是检验真理的唯一标准。建立索引的时候,应进行如下测试:

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。

建立索引要注意的地方很多,最重要的原则还是:实际测试。

分享到:
评论

相关推荐

    给BW的数据存储对象建立索引

    为了提高 DSO 的查询效率,建立索引是非常必要的。 索引是一种数据结构,它可以快速地定位特定的数据记录。通过建立索引,可以减少数据扫描的时间,从而提高查询效率。在 SAP BW 中,索引可以被建立在 DSO 的表字段...

    数据库查询速度优化 建立索引

    "数据库查询速度优化 建立索引" 数据库查询速度优化是数据库管理中非常重要的一方面。快速的查询速度可以提高用户体验,提高系统的整体性能。索引是数据库查询速度优化的重要手段之一。索引是一种特殊的目录,可以...

    lucene 对 xml建立索引

    ### Lucene对XML文档建立索引的技术解析与实践 #### 一、引言 随着互联网技术的迅猛发展,非结构化数据(如XML文档)在企业和组织中的应用日益广泛。如何高效地处理这些非结构化的数据,特别是进行快速检索成为了一...

    SQL SERVER建立索引.pdf

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

    实时建立索引的架构

    在IT行业中,实时建立索引的架构是一种关键的技术,特别是在大数据和搜索引擎领域。这个主题涉及到如何高效、实时地处理和索引大量数据,以便进行快速的查询和分析。以下是对"实时建立索引的架构"的详细解释: 一、...

    分组,建立索引

    在IT领域,尤其是在文本搜索和信息检索中,"分组"和"建立索引"是两个非常关键的概念。本文将详细探讨这两个主题,特别是在Lucene.NET框架中的应用,以及如何结合盘古分词法实现高效的文本处理。 首先,让我们了解...

    行业分类-设备装置-一种建立索引的方法及装置.zip

    标题中的“行业分类-设备装置-一种建立索引的方法及装置”表明了这个技术文档主要涉及的是信息技术领域中,设备装置部分的一种特定的索引构建技术。这种索引方法可能是为了提高数据检索效率,尤其在大数据量或者复杂...

    为mysql数据库建立索引.docx

    正确地建立索引可以大大提高数据库的查询效率和性能。 在本文中,我们将详细介绍如何为MySQL数据库建立索引,包括单字段索引、多字段索引、组合索引和ORDER BY索引等。同时,我们还将介绍使用EXPLAIN命令来测试...

    用lucene对数据库建立索引及搜索

    **使用Lucene对数据库建立索引及搜索** Lucene是一个高性能、可伸缩的信息检索库,它是Apache软件基金会的顶级项目之一。它提供了一个简单但功能强大的API,用于在各种数据源上创建全文搜索引擎,包括数据库。在本...

    Lucene结合Sql建立索引Demo源码

    Lucene结合Sql建立索引Demo源码 Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的...

    lunece 建立索引与查询示例

    **Lucene 建立索引与查询指南** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它提供了高效、可扩展的搜索功能,被广泛应用于各种项目和产品中。本指南将详细介绍如何使用 Lucene 创建索引以及...

    oracle数据库建立索引

    oracle数据库中如何建立索引,建立索引有什么优势,索引该如何使用

    Nutch使用总结 信息检索 建立索引 搜索引擎

    Nutch 是一个开源的网络爬虫项目,主要用来抓取互联网上的网页并建立索引,为信息检索提供基础。对于初学者来说,它是一个很好的平台,可以深入了解搜索引擎的工作原理并动手实践。 ### 1. 系统架构 Nutch 的系统...

    LaTeX论文写作教程-建立索引及文献引用

    LaTeX论文写作教程-建立索引及文献引用 LaTeX是一种基于TeX的排版系统,用于创建高质量的科技文档,如学术论文、书籍、报告等。与传统的字处理软件(如Word)相比,LaTeX具有以下优势: 专业排版:LaTeX提供了丰富...

    Lucene建立索引jar包和Paoding分词jar包

    在建立索引时,Lucene会对输入的文档进行分析,将其拆分成一个个的词汇,并为每个词汇创建一个倒排表,记录该词汇出现在哪些文档以及在文档中的位置信息。lucene-core-3.0.0.jar是Lucene的核心库,包含了构建和查询...

    Lucene结合Sql建立索引

    Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个...本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 支持简单的中文分词,同时提供了Lucene.Net-2.0-004版本的源码给大家

    给MySQL建立索引1

    总的来说,为MySQL数据库建立索引是一个涉及性能优化的关键环节。正确地设计和使用索引可以大幅提升查询效率,减少数据库服务器的负载,进而提高整体系统性能。但同时,索引也会占用存储空间,并在插入、更新和删除...

    Lucene结合Sql建立索引Demo源码.rar

    本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 【该源码由51aspx提供】   源码 " onerror="this.src='/images/ifnoimg.gif'" src="/uploads/allimg/090904/1039152O5-0.jpg...

Global site tag (gtag.js) - Google Analytics