在列上创建索引可以优化查询的速度,但缺点是减慢写入数据的速度。
创建索引的优点:
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引的缺点:
第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
在哪些列上建索引:
在经常需要搜索的列上,可以加快搜索的速度;
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
在经常用在连接的列上,这 些列主要是一些外键,可以加快连接的速度;
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
在经常需要排序的列上创 建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
哪些列不应该建索引:
第一,对于在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。
第二,对于只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。
第三,对于定义为varchar,text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。
第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。
相关推荐
### 关于索引概念、特点、优点、缺点、分类及使用的详细解读 #### 索引的概念 在数据库管理系统(DBMS)中,索引是一种数据结构,它可以帮助快速定位数据库表中的数据记录,从而提高数据检索的速度。索引类似于...
本篇文章将详细讲解MySQL中关于索引的相关知识点,包括索引的数据结构及其优劣,以及如何查看和分析SQL执行计划。 1. **索引的数据结构** - **哈希索引**:适用于单条记录查询,哈希索引通过哈希函数将键值转化为...
以上就是Elasticsearch RestHighLevelClient关于索引库和文档的基本操作。在实际应用中,还需要考虑错误处理、集群配置、性能优化等因素。了解并熟练掌握这些操作,将有助于我们更好地利用Elasticsearch来管理和检索...
在Oracle数据库中,索引分为B树索引、位图索引、函数索引等多种类型,每种都有其特定的应用场景和优缺点。 二、B树索引 B树索引是最常见的索引类型,适用于全值匹配查询。在Oracle中,B树索引由一个或多个索引块...
MySQL中的索引是数据库性能优化的关键工具,它能显著提高数据检索的速度。下面将详细讨论索引的类型、存储方式以及可能导致索引失效的场景。 首先,我们来看一下索引的类型: 1. **主键索引(Primary Key Index)*...
### C#中的索引器详解 #### 一、索引器概述 索引器是C#语言提供的一个特性,它允许我们像操作数组那样通过索引来访问类或结构体的实例成员。通常情况下,当我们想要根据某个键或者索引来获取或设置对象内部的数据...
MySQL数据库中的索引是提高查询效率的关键技术,尤其是在处理大量数据时。本文主要探讨了MySQL数据库索引的原理、类型和优化方法。作者通过实例分析,展示了索引在解决数据库性能问题上的重要作用。 首先,作者指出...
在阿里的面试中,索引是一个重要的讨论话题,特别是对于处理大数据量的系统而言。索引是一种特殊的数据结构,它被用来加速数据库中的数据检索。面试官和面试者讨论了几个关键的索引概念和技术,包括: 1. **索引...
这是数据库课后的一个习题,由于本人初学者,做的不是很好,不过还是希望可以帮到你。
通过上述命令,我们可以获取到关于索引的详细信息,包括扫描页数、扫描扩展盘区数、扩展盘区开关数等。这些指标可以帮助我们评估索引的健康状况,进而决定是否需要对索引进行优化。 #### 五、解决索引碎片的方法 ...
如果你运行这个向导,你会看到关于数据库中关于索引的统计量,这些统计量作为日志工作并定时更新,这样就减轻了手工重建索引所带来的工作量。如果你不想自动维护索引,那么你可以手工重建索引,并在需要时执行 ...
关于索引的常识影响到数据库性能的最大因素就是索引。由于该问题的复杂性,我只可能简单的谈谈这个问题,不过关于这方面的问题,目前有好几本不错的书籍可供你参阅。我在这里只讨论两种SQLServer索引,即clustered...
关于索引使用的一些参考经验: 1. 无法使用索引的场景 索引并不总是有用的,有些情况下,索引可能会降低性能。例如,如果查询语句中的 WHERE 子句中包含多个列,而这些列都有索引,那么索引可能会被忽略。 2. ...
- `comment`: 关于索引的注释。 - `index_comment`: 索引的用户定义注释。 #### 四、检查MySQL索引是否生效 为了确保索引能够正常工作并提高查询效率,我们需要验证索引是否被实际使用。这通常通过`EXPLAIN`命令来...
根据“索引使用规则.txt”文件提供的信息,我们可以深入探讨一系列关于索引使用的最佳实践与限制条件,以下是对这些规则的详细解析: ### 1. 索引与逻辑运算符的兼容性 当在WHERE子句中使用`NOT`或`LIKE '%XX%'`这...
通过解析这个DDL语句,我们可以获得关于索引的所有细节,包括它所基于的表和列。 ### 结论 查询索引对应的表和列对于理解数据库结构、优化查询效率以及进行数据库维护至关重要。通过以上介绍的两种方法——查询...
接下来,文件中提到了几个关于索引使用的常见误区: 1. 索引并非越多越好。虽然索引可以加快查询速度,但过多的索引会降低更新操作的效率,因为每次数据变更操作都需要更新所有相关索引。因此,创建索引时应该进行...
关于索引的最佳实践,有以下几点值得注意: 1. **选择合适的数据类型**:索引的性能与数据类型密切相关,尽可能使用占用空间小且排序效率高的数据类型。 2. **主键索引**:每个表应有一个唯一的主键,这将自动创建...
Richard Foote:1982年从英国移民到澳洲堪培拉,1996年进入ORACLE公司,2002年离开ORACLE,从事ORACLE咨询服务。其专长是对ORACLE索引的深入研究,揭示了我们看不到的地方。