B-Tree 索引是 MySQL 数据库中使用最为频繁的索引类型,除了 Archive 存储引擎之外的其他所有的存储引擎都支持 B-Tree 索引。不仅仅在 MySQL 中是如此,实际上在其他的很多数据库管理系统中B-Tree 索引也同样是作为最主要的索引类型,这主要是因为B-Tree 索引的存储结 ...
分类:
数据库 时间:
2020-05-18 16:07:55
阅读次数:
105
背景 在后端开发中优化查询效率始终是一个永恒的主题,如何使用更加高效的查询方式来优化服务器的查询性能是优化用户体验的一个非常重要的方式,在充分理解本篇文章之前有必要对SQL SERVER数据库中的一些基本概念有一个充分的认识,聚集索引、非聚集索引、覆盖查询这些基本的概念有一个充分的认识,我想了解这些 ...
分类:
数据库 时间:
2020-05-05 12:46:34
阅读次数:
72
B+树索引 B+树索引的本质就是B+树在数据库中的实现。但是B+树索引在数据库中有一个特点就是高扇出性,因此在数据库中,B+树的层高一般都在2~4层,意味着查询某一个键值的行记录最多需要2~4次IO。B+树索引分为聚集索引和辅助索引。 聚集索引 聚集索引就是根据数据表的主键构造一颗B+树,同时叶子节 ...
分类:
数据库 时间:
2020-04-21 18:24:17
阅读次数:
68
「数据库」和「数据库索引」这两个东西是在服务器端开发领域应用最为广泛的两个概念,熟练使用数据库和数据库索引是开发人员在行业内生存的必备技能。
使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界(我自己也还没有达到这层境界)。很大一部份程序员对索引的了解仅限于到“加索引能使查询变快”这个概念为止。
分类:
其他好文 时间:
2020-04-07 23:56:05
阅读次数:
142
InnoDB两大类索引 聚集索引(clustered index) 普通索引(secondary index) InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引 (1)如果表定义了PK,则PK就是聚集索引; (2)如果表没有定义PK,则第一个not NULL ...
分类:
数据库 时间:
2020-03-20 23:46:24
阅读次数:
74
Clustered and Secondary Indexes(聚集索引和二级索引) Every InnoDB table has a special index called the clustered index where the data for the rows is stored. Ty ...
分类:
数据库 时间:
2020-03-16 14:29:24
阅读次数:
84
目录 " 一.InnoDB索引 " " 二.B+树 " " 三.聚集索引和辅助索引 " " 四.索引实战 " " 五.索引操作与规则 " 重建索引 索引覆盖 最左前缀原则 索引下推 用索引和用索引快速定位却别 " 六.普通索引和唯一索引如何选择 " 前提 普通索引和唯一索引下的查询 普通索引和唯一索 ...
分类:
数据库 时间:
2020-03-09 19:35:12
阅读次数:
83
一,插入缓冲(Insert Buffer/Change Buffer):提升插入性能 只对于非聚集索引(非唯一)的插入和更新有效,对于每一次的插入不是写到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,如果在则直接插入;若不在,则先放到Insert Buffer 中,再按照一定的频率进行合并操 ...
分类:
数据库 时间:
2020-03-08 16:06:39
阅读次数:
70
【1】索引覆盖 【1.1】索引覆盖的概念 在我的理解中,什么是索引覆盖?就是说,你的所有查询条件中,每个条件CBO都愿意去扫描索引来查询数据(无论是单列索引还是复合索引均可),然后根据索引扫描/查找的结果可以获取到我们要的结果集。 然后最后非聚集索引会根据不同where条件走的索引获取到叶子节点数据 ...
分类:
其他好文 时间:
2020-01-18 21:11:55
阅读次数:
109
在SQL Server中,一个表只能创建一个聚集索引,但可以将多个非聚集索引。设置某列为主键,该列就默认为聚集索引。 频繁搜索的列。 经常用于查询选择的列。 经常排序、分组的列。 经常用于连接的列(主键/外键)。 不要使用下面的列创建索引。 仅包含几个不同值得列。 表中仅包含几行,为小型表创建索引可 ...
分类:
数据库 时间:
2020-01-10 17:19:27
阅读次数:
73