MySQL从0开始学--03(Mysql优化的基础知识)

1.数据库优化得目的

2.可以从哪些方面进行数据库优化

3.如何发现有问题得SQL,Mysql慢查询日志

  第一步看看有没有开启慢查询得日志:‘

   show VARIABLES like '%slow_query_log%'   OFF表示没有开启

    

   第二步,看看记录未使用索引的查询的设置开了吗?

   SHOW VARIABLES LIKE '%log_queries_not_using_indexes%',没有开启

   

   需要设置为ON,记录未使用索引的查询

   SET GLOBAL log_queries_not_using_indexes=on;

   

   第三步,看看超过多长时间的查询可以记录在数据库中

   

  为了查看效果设置为0

   

   第四步,一切设置妥当之后就可以开启慢查询日志了

   

  第五步,测试,

   我们在以上设置的数据库中查询数据,

   

   慢查询日志所记录的位置:

  

  

  日志显示,执行查询的用户未user,在本地执行的查询,查询的时间未0.000132秒。

  

  第六步,通过使用工具来分析慢查询日志

  

  最慢的三条的分析

  

  

  

 第二款分析工具:

  

  分析:

 

 结果:

 

从日志中需要挑出什么样的SQL进行优化:

通过explain分析问题SQL:

const:对于主键,唯一索引的查找

eq_reg:唯一索引,主键的范围查找

ref:常见于连接的查询

rang:索引的范围查找

index:索引的扫描

ALL:表扫描

实验一下EXPLAIN:

COUNT()和MAX()的优化:

可以看到这是一个全表扫描.这种情况怎么优化呢?可以在payment_date上建立一个索引:

  并不需要表的操作

COUNT()查询的优化:

例子:分别查询2007和2006电影发行的数量

子查询的优化:子查询转换成连接查询后需要注意数据重复的问题

   

使用主键来排序,

    主键必须有序连续且自增。

  

索引的优化:

 1.如何建立合适的索引

如何判断字段的离散度:

索引优化SQL的方法:

第一个就是不能有重复的索引,主键和唯一索引就是重复的索引,例如下面的示例。

  联合索引默认会包含主键,如果建里联合索引又把主键包含进去就是冗余索引,如下例子所示:

如何查看重复以及冗余索引:

 

索引的维护方法:

删除不再使用的索引:

猜你喜欢

转载自blog.csdn.net/weixin_37650458/article/details/104370462