Mysql索引灵魂拷问

Posted 小明学习心得

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、索引是建立的越多越好吗?


以上是关于Mysql索引灵魂拷问的主要内容,如果未能解决你的问题,请参考以下文章

来自面试官一面MySQL索引的连续灵魂拷问

面试官灵魂拷问:什么是MySQL索引?为什么需要索引?

[灵魂拷问]MySQL面试高频问题(工程师方向)

灵魂拷问你真的懂得Mysql的管理和使用吗?

[灵魂拷问]MySQL面试高频100问(工程师方向)

测试面试题集-MySQL数据库灵魂拷问