-
什么是存储引擎?
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。 -
mysql5.7版本的包含如下存储引擎
-
InnoDB存储引擎(InnoDB 是系统的默认引擎,支持可靠的事务处理。)和MyISAM存储引擎对比
-
什么是索引?
什么叫做排好序的快速查找数据结构?
结论: -
索引的优缺点
优点:
缺点:
索引只是提高效率的一个因素,如果你的mysql存在大数据量的表,就需要花时间建立最优秀的索引或者优化查询sql。 -
mysql的索引分类
-
创建索引的基本语法
-
mysql的索引结构
1)BTree索引
2)Hash索引,full-text全文索引,R-Tree索引这个和我们java开发相关性不大,开发中我们主要是BTree索引。 -
哪些情况需要建索引
-
哪些情况不需要创建索引
1) 表记录数太少
2)经常增删改的表
因为索引提高了查询的速度,但是同时也降低了更新表的速度,比如对表进行insert,update和delete。因为更新
更新表时Mysql不仅仅要保存数据还要保存索引文件。
3) 数据重复且分布平均的表字段,应该只为最经常查询和最经常排序的数据列建立索引。如果某个数据列包含许多重复
的内容,那么为它建立索引就没有实际的效果了。 -
mysql之explain(执行计划)
例如我们使用explain分析一条查询语句:
1)执行结果字段id的含义
2)执行结果字段select_type的含义
这个是查询类型,总共有6个,主要是用于区别普通查询,联合查询,子查询等复杂查询。
3) 执行结果字段table的含义
4) 执行结果字段type的含义
这个字段叫做访问类型排列,总共有如下几种类型:
5) 执行结果字段possible_keys的含义
6) 执行结果字段key的含义
7) 执行结果字段key_len的含义
8) 执行结果字段ref的含义
9)执行结果字段rows的含义
10) 执行结果字段Extra的含义
a:Using filesort出现这个不好,需要尽快优化(九死一生)
b: Using Temporary效率比上面的Using filesort更差(十死无生)
c: Using index效率高
d:其他几种
Using where :表示使用了where过来条件
Using join buffer: 表示使用了连接缓存
impossible where: where 字句的值总是false,不能用来获取任何元组
-
什么是mysql的覆盖索引