-- 区别 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。唯一性索引列允许空值,而主键列不允许为空值。主键列在创建时,已经默认为空值 + 唯一索引了。主键可以被其他表引用为外键,而唯一索引不能。一个表最多只能创建一个主键,但可 ...
分类:
其他好文 时间:
2020-03-06 11:11:32
阅读次数:
69
索引 [toc] 分类 唯一索引 普通索引 全文索引 主键索引 组合索引 作用 常用概念:回表、索引覆盖、最左匹配、 1. 回表 :当一个普通的索引被使用时,它的叶子节点存储的是本身索引和主键索引,它先查询自己的索引然后从叶子节点获得主键索引,通过主键索引最终得到数据,叫做回表,重用了主键索引。 2 ...
分类:
数据库 时间:
2020-02-13 19:01:06
阅读次数:
94
本文以 MySQL 数据库InnoDB引擎为例,为大家分析InnoDB数据库引擎对默认的隔离级别可重复读(RR)的具体实现。
分类:
数据库 时间:
2020-02-10 19:43:40
阅读次数:
102
MySQL索引及执行计划 索引 合理的建立索引可以加快数据查询,例如,学校图书管为每一本书编号,根据编号可以快速锁定一本书所在位置。MySQL索引默认B+树索引。索引虽然能够提高检索效率,但同时也会降低更新的速度,因为 也会操作索引文件,会调整因为更新等操作带来的键值变化后的索引信息。 索引类型 主 ...
分类:
数据库 时间:
2020-02-05 23:43:54
阅读次数:
90
如果我们在工作能够更好的利用好索引,那将会极大的提升数据库的性能。 覆盖索引 覆盖索引是指在普通索引树中可以得到查询的结果,不需要在回到主键索引树中再次搜索 建立如下这张表来演示覆盖索引: 我们执行select from T where age between 13 and 25 语句,这条语句的执 ...
分类:
数据库 时间:
2020-02-02 16:02:28
阅读次数:
116
如果使用索引 a,每次从索引 a 上拿到一个值,都要回到主键索引上查出整行数据,这个代价优化器也要算进去的。 而如果选择扫描 10 万行,是直接在主键索引上扫描的,没有额外的代价。 优化器会估算这两个选择的代价,从结果看来,优化器认为直接扫描主键索引更快。 当然,从执行时间看来,这个选择并不是最优的 ...
分类:
数据库 时间:
2020-01-31 21:08:45
阅读次数:
116
三星索引 三星索引是对于一个查询语句可能的最好索引,如果一个查询语句的索引是三星索引,那么它只需要进行一次磁盘的随机读及一个窄索引片的顺序扫描就可以得到全部的结果集;因此其查询的响应时间比普通的索引会少几个数量级;根据书中对三星索引的定义,我们可以理解为主键索引对于 WHERE id = 1 就是一 ...
分类:
数据库 时间:
2020-01-31 20:28:50
阅读次数:
102
在上一篇中,我们简单的介绍了一下 InnoDB 引擎的索引类型,这一篇我们继续学习 InnoDB 的索引,聊一聊索引策略,更好的利用好索引,提升数据库的性能,主要聊一聊覆盖索引、最左前缀原则、索引下推。 覆盖索引 覆盖索引是指在普通索引树中可以得到查询的结果,不需要在回到主键索引树中再次搜索 。 建 ...
分类:
数据库 时间:
2020-01-29 10:56:56
阅读次数:
124
回表:回到主键索引树搜索的过程,称为回表 覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID from T where k between 3 and 5 在引擎内部使用覆盖索引在索引K上其实读了三个记录,R3~R5(对应的索引k上的记录项),但对于MySQL的Server层 ...
分类:
其他好文 时间:
2020-01-28 20:48:56
阅读次数:
54
Mysql是使用B+树作为索引的数据结构,Mysql有两种不同的数据存储引擎:MYISAM 和 INNODB,在Mysql5.5版本之前采用的是MYISAM,5.5之后采用的是INNODB 首先看看mysql是怎么保存数据的 在/var/lib/mysql这个目录下保存的是所有的数据库 使用MYIS ...
分类:
数据库 时间:
2020-01-28 13:51:09
阅读次数:
108