首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql数据库普通索引

MySQL数据库普通索引是一种用于提高查询效率的索引类型。它是在数据表的某个列或多个列上创建的,通过在索引中存储列的值和对应的行指针来加速查询。普通索引与唯一索引的区别在于,普通索引允许列中出现重复的值,而唯一索引则要求列中的值是唯一的。

普通索引可以根据不同的需求选择适合的类型,包括B-tree索引、哈希索引和全文索引等。

优势:

  1. 提高查询效率:普通索引通过构建索引树的结构,使得数据库能够快速定位到满足查询条件的数据行,提高查询效率。
  2. 加速排序:普通索引对查询结果进行排序时,可以避免全表扫描,提高排序的速度。
  3. 减少磁盘IO:普通索引可以减少磁盘IO操作,提高数据库的读取速度。
  4. 支持模糊查询:普通索引可以用于支持模糊查询,如通配符查询和前缀匹配等。

应用场景:

  1. 查询频繁的列:对于经常被查询的列,可以创建普通索引来提高查询性能。
  2. 需要排序的列:如果某个列需要频繁地进行排序操作,可以创建普通索引来加速排序。
  3. 经常使用在WHERE子句中的列:对于经常在WHERE子句中进行过滤的列,可以创建普通索引来提高过滤效率。
  4. 需要进行模糊查询的列:普通索引可以加速模糊查询的速度,提高查询效率。

推荐的腾讯云相关产品:

  1. 云数据库MySQL:腾讯云提供了高性能、高可用的云数据库MySQL服务,可满足各类业务的需求。详情请参考:云数据库MySQL产品介绍
  2. 云数据库TDSQL:腾讯云提供了基于TDSQL引擎的高性能、高可用的云数据库服务,支持MySQL和PostgreSQL。详情请参考:云数据库TDSQL产品介绍
  3. 云数据库TBase:腾讯云提供了分布式关系型数据库TBase,具备高可扩展性、高可用性和高性能,适用于大规模数据存储和高并发访问的场景。详情请参考:云数据库TBase产品介绍
  4. 云数据库DCDB:腾讯云提供了分布式数据库DCDB,具备高性能、高可用和高弹性,适用于大规模在线事务处理和分析查询的场景。详情请参考:云数据库DCDB产品介绍
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql复合索引普通索引总结

( 转 ) mysql复合索引普通索引总结 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)....,因为数据库并没有定义null值。...在绝大多数应用里,数据库中的字符串数据大都以各种各样的名字为主,把索引的长度设置为10~15个字符已经足以把搜索范围缩小到很少的几条数据记录了。...在为BLOB和TEXT类型的数据列创建索引时,必须对索引的长度做出限制;MySQL所允许的最大索引全文索引文本字段上的普通索引只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索操作...如果字段里存放的是由几个、甚至是多个单词构成的较大段文字,普通索引就没什么作用了。这种检索往往以的形式出现,这对MySQL来说很复杂,如果需要处理的数据量很大,响应时间就会很长。

2.8K20

MySQL唯一索引普通索引

InnoDB; insert into t(id, name, k) values (1, 'Java', 100), (2, 'Python', 200), (3, 'Go', 300), (5, 'MySQL...', 500), (6, 'Spark', 600) 我们使用上节的SQL进行分析普通索引和唯一索引的区别。...触发merge的操作主要有: 查询访问数据页 后台线程定期merge 数据库正常关闭的过程中也会执行merge change buffer使用的是buffer pool的内存,因此不能无限增大,change...唯一索引普通索引的插入 假设我们在表中需要插入一条新的数据(4, 'Flink', 400),InnoDB对于唯一索引普通索引的处理有些区别: 假设记录要更新的目标页在内存中,处理流程如下: 如果是唯一索引...唯一索引普通索引 唯一索引普通索引在查询性能上基本没有差别,但在更新上普通索引会快于唯一索引。所以在可以选择普通索引的前提下尽可能选择普通索引

1.7K10
  • MySQL中使用 普通索引 or 唯一索引

    MySQL中可以创建普通索引与唯一索引,这两种索引的区别是: 普通索引(Non-Unique Index),也称为非唯一索引,它允许索引中的条目具有重复的键值。...普通索引的主要目的是加快查询速度,它并不关心数据的唯一性。 普通索引的特点: 可以包含重复的索引键值。 适用于快速查找具有相同索引值的多个记录的场景。 不保证数据的唯一性。...普通索引创建方法: CREATE INDEX idx_email ON customers(email); 唯一索引(Unique Index)是一种数据库索引,它要求索引中的所有键值都是唯一的。...如果尝试插入或更新记录以产生重复的索引键值,数据库将拒绝这种操作。 唯一索引的特点: 保证索引中的键值是唯一的。 适用于确保数据表中某一列或列组合的唯一性,例如身份证号、用户名等。...所以在业务可以接受的情况下,优先考虑使用普通索引,尤其是频繁插入和更新场景。因为普通索引可以配合Change Buffer使用,从而优化更新操作。

    16710

    MySQL选择普通索引还是唯一索引(216)

    普通索引和唯一索引 基本概述 MySQL中可以创建普通索引与唯一索引,这两种索引的区别是: 普通索引(Non-Unique Index),也称为非唯一索引,它允许索引中的条目具有重复的键值。...普通索引的主要目的是加快查询速度,它并不关心数据的唯一性。 普通索引的特点: 可以包含重复的索引键值。 适用于快速查找具有相同索引值的多个记录的场景。 不保证数据的唯一性。...普通索引创建方法: CREATE INDEX idx_email ON customers(email); 唯一索引(Unique Index)是一种数据库索引,它要求索引中的所有键值都是唯一的。...如果尝试插入或更新记录以产生重复的索引键值,数据库将拒绝这种操作。 唯一索引的特点: 保证索引中的键值是唯一的。 适用于确保数据表中某一列或列组合的唯一性,例如身份证号、用户名等。...所以在业务可以接受的情况下,优先考虑使用普通索引,尤其是频繁插入和更新场景。因为普通索引可以配合Change Buffer使用,从而优化更新操作。

    16110

    Mysql如何选择唯一索引普通索引

    相信大家对唯一索引普通索引是有一定的了解的,那么在不同的业务场景,使用唯一索引还是普通索引呢,比如下面的场景 假设你在维护一个账户系统,每一个人都有一个唯一的身份证,而业务也能保证他的唯一性,此时我们设置唯一索引普通索引其实都是可以的...,也就是上图的右下角的数据页,然后通过数据页内容通过二分法定位记录 对于普通索引,查询到满足的而第一个记录后,需要向后继续寻找,直到不满足条件 对于唯一索引,由于索引的唯一性,查询到数据后,直接停止查询...对于普通索引,仅仅把更新操作记录在change buffer中,语句结束 减少从磁盘读入内存以及随机IO访问,是数据库性能提高的操作之一,而change buffer就是在较少随机访问磁盘的操作,因此对性能的提高是很明显的...change buffer使用场景 从上面分析我可以知道cahnge buffer对于唯一索引不起作用,只能使用在普通中,问题是普通索引中一定会起到加速作用吗 因为merge的时候是整整进行数据更新的时候...索引的选择和实践 普通索引和唯一索引选择,其实,这类索引在查询能力上是没有差别,主要考虑的是对更新性能的影响,所以建议选择普通索引

    1.8K20

    MySQL普通索引和唯一索引的选择

    唯一索引普通索引的区别? 普通索引的字段内容是可以重复的,唯一索引的字段内容不可重复。...查询对比 由于在业务层面保证了车牌号的唯一性,那么数据库中有且只有一条车牌号为’鲁B 12345’的车辆信息,那么普通索引只会比唯一索引多一次指针寻址和一次计算,对于当前服务器的CPU性能来说,差距微乎其微...数据页:二级索引的数据页,并不是聚簇索引即主键树的数据页。 数据库中耗时的操作为随机读写磁盘IO....当目标数据页不在内存中时,唯一索引需要将数据从磁盘读入到内存,涉及到IO随机访问,是数据库成本最高的操作之一,普通索引只是需要将数据记录在change buffer,change buffer减少了磁盘随机访问...引用自极客时间《MySQL实战45讲》

    18120

    mysql学习笔记(四)普通索引还是唯一索引

    这一篇主要来分析下如何选择普通索引和唯一索引,以及他们在查询时候的原理。 一、change buffer mysql引擎在查询的时候在存储引擎中提供了内存来帮助我们提高查询的效率。...(4)redo log日志中也会记录change buffer中的操作记录,所以不用担心断电数据库重启后在change buffer中的操作丢失。可以做到持久化数据。...(2)mysql引擎后台有线程会定期进行同步。 (3)数据库正常关闭之前,也会进行同步 以上的change buffer更新操作应用到数据页的过程我们可以叫做merge。...1、普通索引 对于普通索引,根据二分查找算法找到满足条件的记录后,还需要继续查找下一个记录,直到不满足条件为止。...另外上面的例子中,change buffer并不适合在唯一索引中使用。 三、唯一索引普通索引的选择 首先在查询方面,他们的性能其实没有一点差别。

    98020

    MySQL 普通索引和唯一索引该如何选择?

    MySQL 普通索引和唯一索引该如何选择? 普通索引和唯一索引在查询能力上没啥差别,主要考虑对更新性能的影响,要尽量选择普通索引。接下来分析两种索引在查询语句和更新语句对性能的影响。...查询过程 MySQL InnoDB 是采用 B+ 树实现其索引结构。 ? image B+ 树的查找过程 如上图所示:现在需要查找 29 这个值。...,也就是说普通索引和唯一索引在查询性能上差别不是很大。...普通索引能够使用 change buffer ,但是唯一索引不行,因此 普通索引比唯一索引更新操作快。...change buffer 使用场景 适合的场景 非唯一索引 业务写多读少,或者不是写后立即读场景。 不合适场景 数据库都是唯一索引 写入一个数据后,会立即读取它。

    1.5K20

    MySQL实战之普通索引和唯一索引,应该怎么选择?

    1.前言在之前的文章中,我们讲解了索引的基本概念,相信你已经了解了唯一索引普通索引的区别。今天我们就来讨论一下,在不同的业务场景下,应该选择普通索引,还是唯一索引?...现在我要问你的是,从性能的角度考虑,你选择唯一索引还是普通索引呢?选择的依据是什么呢?...在数据库正常关闭的过程中,也会执行merge操作。显然,如果能够将更新操作先记录在change buffer,减少读磁盘,语句的执行速度会得到明显的提升。...IO的访问,是数据库里面成本最高的操作之一。...5.索引选择和实践回到我们文章开头的问题,普通索引和唯一索引应该怎么选择,其实,这两类索引在查询能力上没有差别,主要考虑的是对更新性能的影响,所以,我建议你尽量使用普通索引

    1.7K01

    你确定分得清MySQL普通索引和唯一索引

    1 概念区分 普通索引和唯一索引 普通索引可重复,唯一索引和主键一样不能重复。 唯一索引可作为数据的一个合法验证手段,例如学生表的身份证号码字段,我们人为规定该字段不得重复,那么就使用唯一索引。...(一般设置学号字段为主键) 主键和唯一索引 主键保证数据库里面的每一行都是唯一的,比如身份证,学号等,在表中要求唯一,不重复。唯一索引的作用跟主键的作用一样。...于是现有俩选择: 给id_card字段创建唯一索引 创建一个普通索引 假定业务代码已保证不会写入重复的身份证号,这两个选择逻辑上都正确。但从性能角度考虑,唯一索引还是普通索引呢?...普通索引 将更新记录在change buffer,语句执行结束。 将数据从磁盘读入内存涉及随机IO访问,是数据库里面成本最高操作之一。...6 实践中的索引选择 普通索引和唯一索引究竟如何抉择?这两类索引在查询性能上没差别,主要考虑对更新性能影响。所以,推荐尽量选择普通索引

    2.6K10

    MySQL普通索引和唯一索引到底什么区别?

    1 概念区分 普通索引 V.S 唯一索引 普通索引可重复,唯一索引和主键一样不能重复。...于是现在有如下选择: 在id_card创建唯一索引 创建一个普通索引 假定业务代码已经确保不会写入重复身份证号,这两个选择逻辑上都是正确的。 性能优化角度考虑,选择唯一索引还是普通索引呢?...5 索引选择的最佳实践 普通索引、唯一索引在查询性能上无差别,主要考虑更新性能。所以,推荐尽量选择普通索引。 若所有更新后面,都紧跟对该记录的查询,那就该关闭change buffer。...到底何时使用唯一索引 问题在于“业务可能无法确保”。本文前提是“业务代码已经保证不会写入重复数据”,才讨论性能问题。 如果业务不能保证或业务就是要求数据库来做约束 没得选,必须创建唯一索引。...参考 https://dev.mysql.com/doc/refman/8.0/en/innodb-change-buffer.html

    59010

    你分得清MySQL普通索引和唯一索引了吗?

    0 概念区分 普通索引和唯一索引 普通索引可以重复,唯一索引和主键一样不能重复。 唯一索引可以作为数据的一个合法验证手段,例如学生表的身份证号码字段,我们人为规定该字段不得重复,那么就使用唯一索引。...(一般设置学号字段为主键) 主键和唯一索引 主键保证数据库里面的每一行都是唯一的,比如身份证,学号等,在表中要求唯一,不重复。唯一索引的作用跟主键的作用一样。...不在内存 唯一索引 需要将数据页读入内存,判断到没有冲突,插入值,语句执行结束 普通索引 将更新记录在change buffer,语句执行结束 将数据从磁盘读入内存涉及随机IO访问,是数据库里面成本最高操作之一...4 实践中的索引选择 普通索引和唯一索引如何抉择。 这两类索引在查询性能上没差别,主要考虑对更新性能影响。 所以,推荐尽量选择普通索引。...如果业务不能保证,或者业务就是要求数据库来做约束,那么没得选,必须创建唯一索引。这种情况下,本文意义在于,如果碰上大量插入数据慢、内存命中率低时,多提供一个排查思路。

    2.2K11

    MySQL数据库索引

    建立数据库索引是提升运行效率的重要手段,使用索引能大大提升MySQL的检索速度。创建索引时,首先确保该索引是应用SQL查询语句的条件。(一般为where子句的条件) 索引有单列索引和组合索引两种。...单列索引也就是一个索引只包含一个列,一个数据表可以包含多个单列索引,但是这个不是组合索引哦!!!!!! 组合索引是一个索引包含了多个列。 索引也是一张表,包含了主键和索引字段,并指向实体表的记录。...因为MySQL不仅需要保存数据,还要更新索引文件。并且,建立索引要占用一定的磁盘空间。 唯一索引 唯一索引与前面提到的索引类似,区别在于,索引列的值必须唯一,但是允许有空值。...-> ID INT NOT NULL, -> username varchar(16) not null, -> unique indexname (id) -> ); 普通索引...普通索引是最基本的索引,他没有任何限制。

    1.9K30

    MySQL数据库——索引

    概述 索引MySQL中也叫做"键",保存着数据位置的信息 其作用是为了加快数据库的查询速度 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。...索引的使用 添加索引 alter table 表名 add index 索引名(字段名); #案例 alter table classes add index my_name(name); #给classes...表中的name列添加名为my_name的索引 主键会自动创建索引,外键约束也会自动创建索引 删除索引 drop index 索引名 on 表名; #案例 drop index my_name on classes...; #删除classes表中的my_name索引 添加联合索引 语法 联合索引又叫复合索引,是MySQL的InnoDB引擎中的一个索引方式,如果一个系统频繁地使用相同的几个字段查询结果,就可以考虑建立这几个字段的联合索引来提高查询效率...= 10; #没有使用联合索引

    31K105

    MYSQL数据库-索引

    MYSQL数据库-索引 零、前言 一、索引概念 二、认识磁盘 三、理解索引 1、如何理解Page 2、B+ vs B 3、聚簇索引 VS 非聚簇索引 4、普通索引 5、总结 四、索引操作 1、创建索引...2、查询索引 3、删除索引 零、前言 本章主要讲解MYSQL数据库中的索引这一重要知识点 一、索引概念 索引的价值: 提高数据库的性能,索引是物美价廉的东西了:不用加内存,不用改程序,不用调sql...因为有主键索引数据 注:InnoDB 这种用户数据与索引数据在一起索引方案,叫做聚簇索引 4、普通索引 MySQL 除了默认会建立主键索引外,我们用户也有可能建立按照其他列信息建立的索引,一般这种索引可以叫做辅助...的索引 create index idx_name on user10(name); 普通索引的特点: 一个表中可以有多个普通索引普通索引在实际开发中用的比较多 如果某列需要创建索引,但是该列有重复的值...,那么我们就应该使用普通索引 全文索引的创建: 当对文章字段或有大量文字的字段进行检索时,会使用到全文索引 MySQL提供全文索引机制,但是有要求,要求表的存储引擎必须是MyISAM,而且默认的全文索引支持英文

    2.1K20

    Mysql数据库-索引

    Mysql数据库-索引 2.1 索引概述 MySQL索引(index): 是帮助MySQL高效获取数据的数据结构,所以索引的本质就是数据结构!...一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。索引数据库中用来提高性能的最常用的工具。...备注: 在创建外键时,自动生成 * 普通索引 仅提高查询效率 * 组合(联合)索引 多个字段组成索引 * 全文索引 快速匹配全部文档的方式,mysql5.6之后才支持全文索引 2.5...① 直接创建【了解】 -- 创建普通索引 create index 索引名 on 表名(字段); -- 创建唯一索引 create unique index 索引名 on 表名(字段); -- 创建普通组合索引...普通索引 CREATE INDEX idx_name ON student(`name`); -- 执行如下: mysql> CREATE INDEX idx_name ON student(`name

    2.2K10

    MySQL普通索引和唯一索引到底什么区别?

    1 概念区分 普通索引 V.S 唯一索引 普通索引可重复,唯一索引和主键一样不能重复。 唯一索引可作为数据的一个合法验证手段,例如学生表的身份证号码字段,人为规定该字段不得重复,那么就使用唯一索引。...不在内存 唯一索引 将数据页读入内存,判断到没有冲突,插入值,结束。 普通索引 将更新记录在change buffer,结束。...5 索引选择最佳实践 普通索引、唯一索引在查询性能上无差别,主要考虑更新性能。所以,推荐尽量选择普通索引。 若所有更新后面,都紧跟对该记录的查询,就该关闭change buffer。...到底何时使用唯一索引 问题就在于“业务可能无法确保”,而本文前提是“业务代码已保证不会写入重复数据”,才讨论的性能问题。 若业务无法保证或业务就是要求数据库来做约束 没有撤退可言,必须创建唯一索引。...参考 https://dev.mysql.com/doc/refman/8.0/en/innodb-change-buffer.html

    2.7K41

    oracle删除索引_创建普通索引sql

    1.索引分类 a) 唯一索引, 作用是数据约束,保证数据唯一,还有就是数据索引,提高查询效率 b)一般索引,只有数据索引的作用, 2.唯一索引的建立 create unique index 索引名...on employee(empname); 3.一般索引 create index 索引名 on 表名(字段名) ok,现在我们为employee的address字段,添加一般索引 create index...,field2 desc); 4.函数索引 如果在我们的查询条件使用了函数,那么索引就不可用了。...price字段上做的索引了 ok,我们来创建函数索引 create index index_price on product(nvl(price,0.0)); 5.索引的删除 drop index 索引名...drop index idx_empname; 6.其它的 唯一索引能极大的提高查询速度,而且还有唯一约束的作用 一般索引,只能提高30%左右的速度 经常插入,修改,应在查询允许的情况下,尽量减少索引

    82510
    领券