
Mysql索引
文章平均质量分 86
悟道|养家
中年搬砖男
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
InnoDB非主键索引结构叶子节点为什么存储的是主键值而不是像MyiSAM索引存储数据地址?
1.保持一致性,当数据库表进行DML操作时,同一行记录的页地址会发生改变,因非主键索引保存的是主键的值,无需进行更改;2.节省存储空间,后续补充,不太清楚原因。参考链接:https://blog.csdn.net/a1_HelloWord/article/details/104341349...原创 2020-02-16 22:23:00 · 4121 阅读 · 3 评论 -
Mysql联合索引的数据结构(B+Tree)
B+Tree中的data存储last_name,first_name,dob三个字段信息,类似于一个主键索引的中的一个字段,将三个字段组合在一起,比较的时候和单独的一个字段的区别在于,先比较last_name,然后比较first_name,最后再比较dob,执行这样的规则。综上所述:这样就比较好理解Mysql索引的最左前缀原理...原创 2020-02-16 21:40:00 · 2236 阅读 · 2 评论 -
为什么说InnoDB必须要有主键并且推荐使用自增整型主键呢?
1.InnoDB存储引擎的数据结构必须需要一个主键才可以组织起来,如果用户使用InnoDB存储引擎建立表的时候,没有指定主键,则Mysql会自动的帮你找到一个合适的唯一索引作为主键,若找不到符合条件唯一索引条件的字段时,会生成类似于ROW_ID的虚拟列充当该InnoDB表的主键;2.整型的存储比字段类型要小,而且应为是InnoDB存储引擎使用的是B+Tree数据结构,在进行查询数据是需要对每个元素进行比较,而整型的对比效率是高于其他数据结构的,字符串等。...原创 2020-02-16 13:25:20 · 4597 阅读 · 7 评论 -
MyISAM引擎和InnoDB引擎的区别
1.从Mysql内部的储存文件的格式不一样;MyISAM是3个文件xxx.frm,xxx.MYI,xxx.MYD,而InnoDB是2个文件,分别是xxx.frm,xxx.IBD2.索引的组织结构不一致;MyISAM的索引结构中,叶节点保存的是数据的地址,而InnoDb的索引结构中叶节点保存了所有的数据结构后续补充......原创 2020-02-16 13:11:58 · 139 阅读 · 0 评论 -
MySql索引之InnoDB引擎(聚集索引)
Mysql内部文件以InnoDB作为存储引擎建立表test_innodbCREATE TABLE `test_innodb` ( `ID` int(11) DEFAULT NULL, `NAME` varchar(99),) ENGINE=InnoDB DEFAULT CHARSET=utf8;我们会发现D:\MySQL\mysql-5.7.13-winx64\data...原创 2020-02-16 13:06:55 · 213 阅读 · 0 评论 -
MySql索引之Myisam引擎(非聚集索引)
Mysql内部文件若以这个Myisam引擎创建表test_my时,详见代码:CREATE TABLE `test_my` ( `id` int(11) NOT NULL AUTO_INCREMENT, `mame` varchar(100), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;我们会发现D:\M...原创 2020-02-16 12:53:40 · 749 阅读 · 0 评论 -
B+Tree作为Mysql索引的优势?
B+Tree的性质:非叶子节点只存储键值信息。(可以存放更多的索引) 所有叶子节点之间都有一个链指针。(提高区域访问效率) 数据记录都存放在叶子节点中。(查找数据更加快速)采用B+Tree的结构时,Mysql的InnoDB存储引擎查找到一行记录最多只需要3次磁盘IO操作(10亿条数据量)InnoDB存储引擎中页的大小为16KB,一般表的主键类型为INT(占用4个字节)或BIGINT(...原创 2020-02-16 11:44:55 · 487 阅读 · 0 评论 -
InnoDB存储引擎中有页(Page)的概念
系统从磁盘读取数据到内存时是以磁盘块(block)为基本单位的,位于同一个磁盘块中的数据会被一次性读取出来,而不是需要什么取什么。InnoDB存储引擎中有页(Page)的概念,页是其磁盘管理的最小单位。InnoDB存储引擎中默认每个页的大小为16KB,可通过参数innodb_page_size将页的大小设置为4K、8K、16K,在MySQL中可通过如下命令查看页的大小:mysql>...原创 2020-02-16 10:59:28 · 1179 阅读 · 1 评论 -
B-Tree作为索引有哪些优势?
首先通过对B-Tree的结构可知,B-Tree作为索引有下列的优势:叶结点具有相同的深度,叶结点的指针为空,相比红黑树或者平衡二叉树平衡性更好 一个结点中可以存储多个关键字元素,第一点在相同的索引元素下笔红黑树或者平衡二叉树的深度更小,减少了对磁盘的IO操作次数,第二点每次读取到多个数据后,在内存中的运算速度更加的迅那么B-Tree中每个结点的数据是否时越多越好呢?答:否,1.因为索引...原创 2020-02-16 00:26:32 · 1029 阅读 · 0 评论 -
哈希索引为什么不可以作为Mysql的索引?
1.哈希索引也不支持部分索引列匹配查找,如果在数据(a,b)上面建立索引,在查询数据a的时候数据不能使用索引;2.哈希索引只支持等值比较查询,所有的范围查找均不支持;3.哈希冲突如果比较严重的话,对数据库索引的维护压力比较大,如果在重复值比较多的列上建立索引,当对某条数据进行删除的时候,需要遍历对应哈希值的链表中每一行。...原创 2020-02-13 22:26:33 · 719 阅读 · 0 评论 -
红黑树为啥不可以作为Mysql的索引
红黑树基本都是存储在内存中才会使用的数据结构。在大规模数据存储的时候,红黑树往往出现由于树的深度过大而造成磁盘IO读写过于频繁,进而导致效率低下的情况。为什么会出现这样的情况,我们知道要获取磁盘上数据,必须先通过磁盘移动臂移动到数据所在的柱面,然后找到指定盘面,接着旋转盘面找到数据所在的磁道,最后对数据进行读写。磁盘IO代价主要花费在查找所需的柱面上,树的深度过大会造成磁盘IO频繁读写。根...原创 2020-02-13 18:33:18 · 966 阅读 · 0 评论