Java 杂谈

MySQL优化知识点总结

2018-07-19  本文已影响11人  Jivanmoon

前言

这篇博文是对尚硅谷MySQL高级课程的总结。

一、存储引擎简介

TIM截图20180719190854.png

二、JOIN语句总结

2015813152628267.png

其中因为MySQL没有外链接,所以外链接部分的SQL语句和图中的有区别,下面是上图中第五个图的SQL语句:

select * from tablea a left join tableb b on a.key = b.key
union 
select * from tablea a right join tableb b on a.key = b.key

第六个图的SQL语句:

select * from tablea a left join tableb b on a.key = b.key where b.key is null
union 
select * from tablea a right join tableb b on a.key = b.key where a.key is null

三、索引

1、什么是索引?

MySQL官方对索引的定义为:索引是帮助MySQL高速获取数据的数据结构,可以简单理解为,索引就是一种排好序的快速查找数据的数据结构

2、MySQL中的索引是哪种数据结构?

MySQL中的索引,如果没有特别指明,都是指B+树,除了B+树这种索引外,还有哈希索引等。

3、索引的优点和缺点

既然索引是一种排好序的可以快速查找数据的数据结构,那么我想优点也就很明确了,那就是可以使用索引快速的查找到想找的数据,并且可以借助索引快速的排序,这里我还是希望不懂数据结构的可以去查查相关的资料,毕竟数据结构是比较抽象的,如果之前没有听说过肯定会想知道为啥用了数据结构就可以快速的排序和查找了,这里可以好好学习一下树这种数据结构,然后你就会豁然开朗。
索引的缺点就是索引本身会占用空间,并且会降低insertupdatedelete操作的性能,因为当表改动时,索引也会发生改变,索引的改变也会消耗时间,所以对于经常增删改的表并不适合创建索引。

4、索引的种类

第一种
CREATE INDEX indexName ON tableName(columnName);
第二种
ALTER table tableName ADD INDEX indexName(columnName);
第一种
CREATE UNIQUE INDEX indexName ON tableName(columnName);
第二种
ALTER table tableName ADD UNIQUE [indexName] (columnName);
第一种
CREATE INDEX indexName ON tableName(columnName1, columnName2);
第二种
ALTER table tableName ADD INDEX indexName(columnName1, columnName2);

删除索引的语法:

drop index [indexName] on tableName;

查看索引的语法:

show index from tableName;

5、创建索引的一些建议

6、学一一下怎么怎么使用explain分析SQL性能

我们在学习如何创建高效的索引之前需要先学习一下怎么分析SQL的性能,要不我们怎么知道创建索引后是不是比以前快了很多,或者我们如何知道一条SQL是否用到了我们创建的索引,这些我们就需要使用explain命令,这里就给出一个博客,博客中有很详细的教程:MySQL 性能优化神器 Explain 使用分析

7、如何创建高效的索引

其实只要我们创建的索引在查询和排序时能够被用上,那么这个索引就是一个成功的索引,我们学习如何创建高效的索引其实就是学习如何创建一个不会失效的索引,我们以下索引为例:

CREATE INDEX indexName ON tableName(a, b, c);

索引的使用分为排序和查找,下面的规则适合于查找,也就是where子句中:

下面是排序时的规则,也就是用在order by 子句中:

当使用group by子句时,和使用order by子句的规则相同。

上一篇 下一篇

猜你喜欢

热点阅读