mysql 订单表索引的使用

面试的时候,面试官问了下边这个sql如何优化select * from order where date="xxx" and status=1主要是考察date和status建立联合索引,另外需要注意status 的区分度差。以及*的话可以用具体的字段来代替。这样好处是,如果所需字段和索引相同则可以命中索引,而不用去叶子节点再次查找数据。

b树和b+树的区别

b树的所有节点都存储数据,b+树只有叶子节点存储数据。这样的话,b树查询就不稳定,最快只需要访问1层,最慢访问叶子节点。b+树数据在叶子节点基础上是双向链接,这样范围查询效率就比较高。b树 每个节点存储数据,就占用更多空间,导致索引减少,树的深度可能增大。b树更适合 内存环境、小数据量、以单值查询为主 的场景,而在需要频繁范围查询的磁盘存储场景(如传统关系型数据库主键索引),B + 树仍是更优选择

二叉树和多叉树的区别

之前对这一块内容很迷惑,尤其是多叉树空间利用率高。最近又复习了下,加深下印象。二叉树,一般是一个节点外加左指针和右指针。多叉树,是n个节点,对应n+1个指针。对磁盘的读取,是基于块结构来进行的。磁盘对二叉树和多叉树,都可以打包多个节点。这里边唯一区别就是,多叉树可以根据指针快速指向目标,这个i/o的访问次数是远远低于二叉树的。举个例子。1. 先看反例:普通二叉树像 “写得很烂的笔记”普通二叉树的节