说一下MySQL索引数据结构
mysql支持索引数据结构有hash表,btree等但是实际上使用的是b tree。hash不支持范围查询,这是它的缺点
详细说说b树?
mysql使用的是b+树,叶子节点形成链表,这个链表是双向链表。非叶子节点存储的是id(想象有很多个id然后顺着id中间的路径一点一点的往下找)
为什么要使用b树?
从mysql的io读写上分析,为了追求效率通常io会读取一页到数据当中这一页包含很多数据正好对应了b树一个节点多个数据的情况,所以设计为b树,解决了查页方便同时有使得整个过程非常高效。
扩展 :引进索引的缺点
很明显索引仅仅在读取数据时有优势,然而在删除,修改,增加时却成了冗余,因为还要再修改索引结构,不过一般以查询为主。
排序算法的选择
海量数据选择外排序,外排序的结构体是堆,每次弹出n个数据到目标文件,然后再从原来的分组当中各自取对应的数据总和为n
算法题:最长回文子串
https://leetcode-cn.com/problems/longest-palindromic-substring/