一身转战三千里,一剑曾当百万师。这篇文章主要讲述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索引灵魂拷问】
推荐阅读
- jQuery基础—— 解决jQuery冲突
- d的嵌套赋值
- 并发-线程基础线程共享和协作
- d重载嵌套函数
- StringUtils中isNotBlank和null和isEmpty的联系
- vim用c++写函数
- Spring之BeanFactory和FactoryBean的区别
- 索引|《穿越 Java | 第三章 - 基础语法篇》
- linux文件链接文件存储和硬链接软连接