2021年9月19日

MySQL - 为什么索引会有“最左前缀匹配原则”?

摘要: 总结 由于联合索引构建存储方式(InnoDB联合索引的数据结构是什么?)是根据第一个索引列“单调递增”排序,如果第一列相等则再根据第二列单调递增排序,依次类推。。。也就是说,对于(b,c,d)联合索引来说,相当于创建了(b)、(b、c)(b、c、d)三个索引 索引的第一列也就是b列可以说是从左到右单 阅读全文

posted @ 2021-09-19 18:29 frank_cui 阅读(856) 评论(0) 推荐(0)

MySQL - InnoDB联合索引的数据结构是什么?

摘要: 总结 对于联合索引来说只不过比单值索引多了几列。 联合索引的所有索引列都出现在索引树上,并依次顺序比较几个列的大小。 InnoDB引擎会首先根据第一个索引列“单调递增”排序,如果第一列相等则再根据第二列排序,依次类推. 必看例子: 数据表T1有字段a,b,c,d,e,其中a是主键,除e为varcha 阅读全文

posted @ 2021-09-19 18:05 frank_cui 阅读(1740) 评论(0) 推荐(1)

MySQL - 为什么辅助索引的叶子节点data域存储的是主键值?

摘要: 为了一致性和节省存储空间: 已经维护了一套主键索引+数据的B+Tree结构,如果再有其他的非主键索引的话,索引的叶子节点存储的是主键,这是为了节省空间,因为继续存数据的话,那就会导致一份数据存了多份,空间占用就会翻倍。 另一方面也是一致性的考虑,都通过主键索引来找到最终的数据,避免维护多份数据导致不 阅读全文

posted @ 2021-09-19 17:43 frank_cui 阅读(595) 评论(0) 推荐(0)

MySQL - 为什么InnoDB表必须有主键?并且推荐使用整型的自增主键?

摘要: 在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。 为什么InnoDB表必须有主键? Mysql索引设计如此....mysql设计的就是innoDB把你的数据和主键索引用B+Tree来组织的,没有主键他的数据就没有一个结构来存储。即:主键索引就是数据文件本 阅读全文

posted @ 2021-09-19 17:28 frank_cui 阅读(854) 评论(0) 推荐(0)

MySQL - 索引中一个节点的大小是多少?两千万以内的数据需要几次IO?

摘要: 总结 1.mysql对这个节点大小设置的是16K,用下面这个SQL就是可以查到 show global status like 'Innodb_page_size' 2.树的高度只有3的情况下就能存储2千多万的数据,而且mysql底层的索引他的根节点,是常驻内存的,直接就放到内存的。所以次数再减去1 阅读全文

posted @ 2021-09-19 17:12 frank_cui 阅读(2286) 评论(2) 推荐(1)

导航

levels of contents