首页
学习
活动
专区
圈层
工具
发布

MySQL索引的优缺点

大家好,又见面了,我是你们的朋友全栈君。 一、什么是索引 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。...由于建立了firstname列的索引,与执行表的完全扫描相比,MySQL的效率提高了很多,但我们要求MySQL扫描的记录数量仍旧远远超过了实际所需要的。...当我们执行查询的时候,MySQL只能使用一个索引。如果你有三个单列的索引,MySQL会试图选择一个限制最严格的索引。...peopleid FROM people WHEREage=‘17’; SELECT peopleid FROM people WHERE lastname=‘Sullivan’ ANDage=‘17’; 五、索引的缺点...事实上,索引也是有缺点的。 首先,索引要占用磁盘空间。通常情况下,这个问题不是很突出。但是,如果你创建每一种可能列组合的索引,索引文件体积的增长速度将远远超过数据文件。

2.2K30

MySQL: Hash索引优缺点

优点: 因为索引自身只需存储对应的哈希值,所以索引的结构十分紧凑,这也让哈希索引查找的速度非常快 缺点: 1、不能避免读取行 哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行...不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能的影响并不明显。 2、无法用于排序 哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。...3、无法使用部分索引列匹配查找 哈希索引也不支持部分索引列匹配查找,因为哈希索引始终是使用索引列的全部内容来计算哈希值的。...5、存在Hash冲突 访问哈希索引的数据非常快,除非有很多哈希冲突(不同的索引列值却有相同的哈希值)。...以上内容摘自《高性能MySQL》 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141248.html原文链接:https://javaforall.cn

2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL索引失效及使用索引的优缺点

    联合索引失效 先创建一个包含三个字段的联合索引,索引顺序如下: ? 由以下三张图的key_len字段我们可以得出三个索引的长度分别为:title长303,author长122,price长5. ?...联合索引使用时遵循最左匹配原则,如果不是从最左列开始时,整个索引失效,如果最左匹配则依次往右使用索引,直到碰到不匹配的地方之后生效之前匹配到的索引 ? ?...注意事项 在进行索引使用测试时,可能会因为测试数据太少从而MySQL会认为查询语句走全表扫描比走索引更有效,所以会自动去除索引,为避免测试结果误导可使用如下方式强制MySQL使用索引 explain...select * from book FORCE index(索引名称) where price=1+1; 使用索引的优点 唯一索引或主键索引可以保证数据库表的唯一性 可以提高查询效率和性能 加速表连接的速度...加快排序的效率 使用索引的缺点 每次更新修改删除都需要维护索引、从而消耗性能 索引文件会占用物理空间

    4K60

    mysql索引的类型和优缺点

    现在来介绍了数据库索引,及其优、缺点。针对MySQL索引的特点、应用进行了详细的描述。分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用。...这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,...在为BLOB和TEXT类型的数据列创建索引时,必须对索引的长度做出限制;MySQL所允许的最大索引长度是255个字符。...有了这个关键字,MySQL将不是去执行那条SELECT命令,而是去对它进行分析。MySQL将以表格的形式把查询的执行过程和用到的索引(如果有的话)等信息列出来。...possible_keys数据列给出了MySQL在搜索数据记录时可选用的各个索引。key数据列是MySQL实际选用的索引,这个索引按字节计算的长度在key_len数据列里给出。

    3K70

    mysql索引的类型和优缺点

    现在来介绍了数据库索引,及其优、缺点。针对MySQL索引的特点、应用进行了详细的描述。分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用。...这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,...在为BLOB和TEXT类型的数据列创建索引时,必须对索引的长度做出限制;MySQL所允许的最大索引长度是255个字符。...有了这个关键字,MySQL将不是去执行那条SELECT命令,而是去对它进行分析。MySQL将以表格的形式把查询的执行过程和用到的索引(如果有的话)等信息列出来。...possible_keys数据列给出了MySQL在搜索数据记录时可选用的各个索引。key数据列是MySQL实际选用的索引,这个索引按字节计算的长度在key_len数据列里给出。

    1.6K30

    MySQL索引篇,索引的优缺点,分类及设计原则

    索引在数据库中的作用是快速找出某个列中一个特定值的行,不使用索引的话,MySQL必须从第一条记录遍历到相关行,表越大,花费的时间越多,但是如果有索引,就能快速的到达某个位置去搜索数据文件,索引对于优化数据库查询速度有着不可替代的作用...,本文主要给大家讲解一下MySQL数据库中,索引的优缺点,分类以及设计原则。...索引的缺点 1.创建索引和维护索引需要时间,而且数据量越大时间越长。 2.创建索引需要占据磁盘的空间,如果有大量的索引,可能比数据文件更快达到最大文件尺寸。...3.当对表中的数据进行增加,修改,删除的时候,索引也要同时进行维护,降低了数据的维护速度。 ? 索引的分类 1.普通索引(Normal):基本索引类型,允许在定义索引的列里插入空值或重复值。...3.单列索引:只包含一个列的索引,一个表中可以有多个。 4.组合索引:包含多个列的索引,查询条件包含这些列的最左边的字段的时候,索引就会被引用,遵循最左缀原则。

    2.3K20

    mysql索引是什么 优点和缺点_MySQL索引优缺点、使用原则及种类介绍「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 一、索引简介 1、索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构。...在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。MyISAM和InnoDB存储引擎只支持BTREE索引,MEMORY/HEAP存储引擎支持HASH和BTREE索引。...3、索引的缺点 A、创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加 B、索引也需要占空间,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值...B、唯一索引 索引列中的值必须是唯一的,但是允许为空值。 C、主键索引 主键索引是一种特殊的唯一索引,不允许有空值。...4、空间索引 空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种:GEOMETRY、POINT、LINESTRING、POLYGON。

    1.1K10

    索引(优缺点)

    索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 二、索引的优点 1、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。...5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能 三、索引的缺点 1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。...3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 四、索引的分类 1、聚集索引,表数据按照索引的顺序来存储的。...第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。...六、索引的实现 常见的数据库索引是B-tree索引,虽然Hash 索引效率很高,但是它有很多弊端,比如 Hash 索引仅仅能满足”=”,”IN”和””查询,不能使用范围查询等,这些弊端导致其不是常见的数据库索引

    1.9K20

    MySQL-索引的数据结构及优缺点

    MySQL在进行数据查找时,首先查看查询条件是否命中某条索引,符合则通过索引查找相关数据,如果不符合则全表扫描,建索引目的就是为了减少磁盘I/O次数,加快查询效率。...索引及其优缺点 索引概述 索引本质:索引是数据结构。这些数据结构以某种方式指向数据,这样可以在这些数据结构的基础上实现高效查找算法。...索引是在存储引擎实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有类型的索引。同时存储引擎可以定义每个表的最大索引数和最大索引长度。...对于有依赖关系的子表和父表联合查询时,可以提高查询速度 4、在使用分组和排序子句进行数据查询时,可以显著减少查询中分组和排序的时间,降低CPU的消耗 缺点 1、创建索引和维护索引要耗费时间 2...,节省了大量I/O操作 缺点 插入速度严重依赖插入顺序,按照主键的顺序插入是最快的方式,否则会出现页分裂,严重影响性能 更新主键的代价很高,因为将会导致被更新的行移动 二级索引需要两次索引查找

    55330

    MySQL中索引优缺点、分类和使用操作详解

    索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件...二、MySQL中索引的优点和缺点和使用原则 优点: 2、所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段设置索引 3、大大加快数据的查询速度 缺点: 1、创建索引和维护索引要耗费时间...使用原则:       通过上面说的优点和缺点,我们应该可以知道,并不是每个字段度设置索引就好,也不是索引越多越好,而是需要自己合理的使用。...上面说的只是很片面的一些东西,索引肯定还有很多别的优点或者缺点,还有使用原则,先基本上理解索引,然后等以后真正用到了,就会慢慢知道别的作用。...key:实际选用的索引 key_len:显示了mysql使用索引的长度(也就是使用的索引个数),当 key 字段的值为 null时,索引的长度就是 null。

    1.3K10

    SQL索引优缺点

    索引的缺点:优点显而易见,同样缺点也是显而易见: 1:创建索引需要额外的磁盘空间,索引最大一般为表大小的1.2倍左右。...例如我们在一个创建有非聚集索引的列上做范围查询,此列的索引不会起到任何的优化效果,反而由于数据的修改而需要维护索引表,从而影响了对数据修改的性能。...什么字段不适合创建索引? 1:不经常使用的列,这种索引带来缺点远大于带来的优点。 2:逻辑性的字段,例如性别字段等等,匹配的记录太多,和表扫描比起来不相上下。...2:系统上线前不合理的索引,随着数据的增加,缺点越来越明显,此时需要调整索引。 3:随着数据的增加,产生了越来越多的页分裂,导致索引性能越来越低。...2:不要设置过多的索引,在没有聚集索引的表中,最大可以设置249个非聚集索引,过多的索引首先会带来更大的磁盘空间,而且在数据发生修改时,对索引的维护是特别消耗性能的。

    1.7K10

    浅谈索引的优缺点和建立索引的原则

    索引的优点 索引的缺点 建索引的几大原则 索引的优点 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。...通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能 索引的缺点 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。...建索引的几大原则 1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、 3 and...=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式 3.尽量选择区分度高的列作为索引,区分度的公式是...比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可 Where 子句中经常使用的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。

    3.7K10

    MySQL索引详解(优缺点,何时需要不需要创建索引,索引及sql语句的优化)

    MySQL索引详解(优缺点,何时需要/不需要创建索引,索引及sql语句的优化) 一、什么是索引? 索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。...二、索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高性能(查询速度) 三、优点: 通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性。...可以加快数据的检索速度 可以加速表与表之间的连接 在使用分组和排序进行检索的时候,可以减少查询中分组和排序的时间 四、缺点 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。...七、索引的分类: 普通索引:最基本的索引,它没有任何限制 唯一索引:索引列的值必须唯一,且不能为空,如果是组合索引,则列值的组合必须唯一。...13、建立索引的列不能为null,使用not null约束及默认值 14、利用延迟关联或者子查询优化超多分页场景, MySQL并不是跳过offset行,而是取offset+N行,然后放弃前offset行

    4.8K10

    数据库索引的优缺点

    大家好,又见面了,我是你们的朋友全栈君。...索引的优缺点 索引的优点: ① 建立索引的列可以保证行的唯一性,生成唯一的rowId ② 建立索引可以有效缩短数据的检索时间 ③ 建立索引可以加快表与表之间的连接 ④ 为用来排序或者是分组的字段添加索引可以加快分组和排序顺序...索引的缺点: ① 创建索引和维护索引需要时间成本,这个成本随着数据量的增加而加大 ② 创建索引和维护索引需要空间成本,每一条索引都要占据数据库的物理存储空间,数据量越大,占用空间也越大(数据表占据的是数据库的数据空间...) ③ 会降低表的增删改的效率,因为每次增删改索引需要进行动态维护,导致时间变长 什么情况下需要建立索引 数据量大的,经常进行查询操作的表要建立索引。...用于排序的字段可以添加索引,用于分组的字段应当视情况看是否需要添加索引。 表与表连接用于多表联合查询的约束条件的字段应当建立索引。

    78110

    【116期】MySQL索引优缺点、何时需要不需要创建索引、索引及sql语句的优化

    二、索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高性能(查询速度) 三、优点: 通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性。...可以加快数据的检索速度 可以加速表与表之间的连接 在使用分组和排序进行检索的时候,可以减少查询中分组和排序的时间 四、缺点 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。...索引需要占用物理空间,数据量越大,占用空间越大 会降低表的增删改的效率,因为每次增删改索引,都需要进行动态维护 五、什么时候需要创建索引 主键自动建立唯一索引 频繁作为查询条件的字段应该创建索引 查询中排序的字段创建索引将大大提高排序的速度...七、索引的分类: 普通索引:最基本的索引,它没有任何限制 唯一索引:索引列的值必须唯一,且不能为空,如果是组合索引,则列值的组合必须唯一。...13、建立索引的列不能为null,使用not null约束及默认值 14、利用延迟关联或者子查询优化超多分页场景,MySQL并不是跳过offset行,而是取offset+N行,然后放弃前offset行,

    3.5K30

    跳槽必看のMySQL索引:B+树原理揭秘与索引优缺点分析

    MySQL存储引擎有MyISAM、InnoDB、Memory,其中InnoDB是在MySQL 5.5之后成为默认的存 储引擎。 在实际场景中,索引对于良好的性能起到非常关键的作用。...B+树(InnoDB索引结构) 在MySQL 5.5之后,InnoDB成为默认的MySQL存储引擎,B+Tree索引类型也是MySQL存储引擎采用最多的索引类型。...三、索引的优缺点 在了解了B+树的索引结构后,我们知道恰当的索引使用可以为我们带来极大的查询效率,提高性能。...但是索引也并非没有缺点,了解好索引的优缺点,选择使用索引时,需要综合考虑索引的优点和缺点,才能让我们在实际使用索引的过程中得心应手。...四、索引使用场景 索引最大的好处是提高查询速度,但是索引使用不当则会出现上述描述的缺点所带来的影响。因此,索引不是万能钥匙,它也是根据场景来使用的。 那么在什么情况下,我们该使用索引呢?

    46810

    Oracle索引的建立及优缺点

    在看公司建表语句时发现了这样一段代码 本着学习的态度面向百度::::: 原来这是Oracle的索引 Oracle的索引说明 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。...2)索引是建立在表上的可选对象;索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率 3)索引在逻辑上和物理上都与相关的表和数据无关,当创建或者删除一个索引时,不会影响基本的表...另外附上索引的优缺点(面试会经常问到) 索引的优缺点 索引主要是为了提高数据的查询速度,这就是索引的优点。但是当进行增删改的时候,会更新索引。...因此索引越多,增删改的速度就会越慢,因为有一个维护索引的过程。创建索引之前需要权衡该字段是否经常发生增删改操作,否则可能会带来负优化的问题。 索引的优点 很大地提高了数据的检索速度。...创建唯一索引能保证数据库表中每一行数据的唯一性(唯一性约束)。 提高表与表之间的连接速度。 索引的缺点 索引需要占用物理空间。

    1.7K40

    【MySql】MySql索引的作用&&索引的理解

    【MySql】MySql索引的作用&&索引的理解 索引的作用 索引是与效率挂钩的,所以没有索引,可能会存在问题 索引:提高数据库的性能,索引是物美价廉的东西了。...MySQL的服务器,本质是在内存中的,所有的数据库的CURD操作,全部都是在内存中进行的!所以索引也是如此 提高算法效率的因素:1.组织数据的方式2.算法本身。...常见的索引分为以下几种 主键索引(primary key) 唯一索引(unique) 普通索引(index) 全文索引(fulltext)–解决中子文索引问题 创建一个海量表,在查询的时候,...解决方法,创建索引 alter table EMP add index(empno); 测试看查询时间 时间变得非常快!这就是索引带来的好处! 想认识索引之前,我们非常有必要先了解一下磁盘。...把整个的B+树称作mysql innode db下的索引结构,一般我们建表的时候,就是在该结构下进行CURD,即使没有主键也是这样子的,会有默认主键的至此,我们已经给我们的表user构建完了主键索引。

    1.2K30

    【MySQL】MySQL的索引

    索引的操作-全文索引 索引的操作-空间索引 索引的验证 索引的特点 介绍 索引是通过某种算法,构建出一个数据模型,用于快速找出在某个列中有一特定值的行,不使用索 引,MySQL必须从第一条记录开始读完整个表...而3和4相比where条件的顺序不一样,为什么4可以用到索引呢?是因为mysql本身就有一层sql优化,他会根据sql来识别出来该用哪个索引,我们可以理解为3和4在mysql眼中是等价的。...全文索引的版本、存储引擎、数据类型的支持情况: MySQL 5.6 以前的版本,只有 MyISAM 存储 引擎支持全文索引; MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引...-空间索引 介绍 MySQL在5.7之后的版本支持了空间索引,而且支持OpenGIS几何数据模型 空间索引是对空间数 据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT...索引的缺点 创建索引和维护索引需要消耗时间,并且随着数据量的增加, 时间也会增加 索引需要占据磁盘空间 对数据表中的数据进行增加,修改,删除时,索引也要动态的维护,降低了维护的速度 创建索引的原则 更新频繁的列不应设置索引

    4.2K30
    领券