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、索引是建立的越多越好吗?

发布了48 篇原创文章 · 获赞 165 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/FMC_WBL/article/details/100552593