当前位置: 首页 > >

Mysql索引灵魂拷问

发布时间:

1、你能说说什么是索引吗?


索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。


2、索引具体采用的哪种数据结构呢?


(不同索引数据结构不同)


3、B数和B+树的区别?


4、InnoDB使用的B+ Tree的索引模型,那么你知道为什么采用B+ 树吗?这和Hash索引比较起来有什么优缺点吗?


(B+ Tree索引和Hash索引区别 哈希索引适合等值查询,但是不无法进行范围查询 哈希索引没办法利用索引完成排序 哈希索引不支持多列联合索引的最左匹配规则 如果有大量重复键值得情况下,哈希索引的效率会很低,因为存在哈希碰撞问题)


5、你知道B+ Tree的叶子节点都可以存哪些东西吗?


(B+ Tree的叶子节点存储了整行数据的是主键索引,也被称之为聚簇索引。而索引B+ Tree的叶子节点存储了主键的值的是非主键索引,也被称之为非聚簇索引。)


6、聚簇索引和非聚簇索引,在查询数据的时候有区别吗?


7、为什么聚簇索引查询会更快?


8、在创建索引的时候都会考虑哪些因素呢?


9、创建联合索引的时候,需要做联合索引多个字段之间顺序你们是如何选择的呢?


(最左前缀匹配问题)


10、联合索引的最左匹配原则的成因?


11、你知道在MySQL 5.6中,对索引做了哪些优化吗?


12、如何定位并优化慢查询sql?


13、什么情况下会发生明明创建了索引,但是执行的时候并没有通过索引?


14、索引是建立的越多越好吗?



友情链接: