SQL语句优化

【数据库优化的目的】

1.避免出现页面访问错误

  由于数据库连接timeout产生页面5XX错误。

  由于慢查询造成页面无法加载。

  由于阻塞造成数据无法提交。

2.增加数据库的稳定性

  很多数据库问题都是由于低效的查询引起的。

3.优化用户体验

  流畅的访问速度。

  良好的网站功能体验。

 

【从哪些方面进行数据库优化】

 

【SQL及索引优化】
【如何发现有问题的SQL】

使用MySql慢查询对有效率问题的SQL进行监控

#是否开启了慢查询日志
show VARIABLES like 'slow_query_log'; #查看超过多少秒的查询会被记录到慢查询日志中
show VARIABLES like 'long_query_time' ;#指定慢查询日志所存储的位置
set GLOBAL slow_query_log_file = 'D:\mysql_log\mysql-slow.log' #把没有使用索引的SQL语句记录到慢查询日志中
set GLOBAL log_queries_not_using_indexes = ON ; #打开慢查询日志
set  GLOBAL slow_query_log = ON;#超过1秒的慢查询记录到日志中
set GLOBAL long_query_time = 1 ;

【慢查询日志的存储格式】

【这里有待补充....】

 

【如何通过慢查询日志发现有问题的SQL】

1.查询日数多且每次查询占用时间长的SQL

通常为pt-query-digest分析的前几个查询。

2.IO大的SQL

注意pt-query-digest分析中的Rows examine项。

3.未命中索引的SQL

注意pt-query-digest分析中的Rows examine 和 Rows Send 的对比。

 

【如何分析SQL查询】

使用explain查询SQL的执行计划

[ 字段解释 ]

table:显示这一行的数据是关于哪张表的

type:这是重要的列,显示连接使用了何种类型。最好到最差的连接类型为const、eq_reg、ref、range、index、ALL

possible_key:显示可能应用在这张表的索引,如果为空,没有可能的索引。

key:实际使用的索引。如果为NULL,则没有使用索引。

key_len:使用索引的长度。在不损失精确性的情况下,长度越短的越好。

ref:显示索引的哪一列被使用了,如果可能的话,是一个常数。

rows:MySQL认为必须检查的用来返回请求的行数。

Extra:该列需要注意的返回值:

   Using filesort:看到这个的时候,查询就需要优化了。MySQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部的行指针来排序全部行。

          Using temporary:看到这个的时候,查询就需要优化了。这里MySQL需要创建一个临时的表来存储结果,这通常发生在对不同的列集进行order by上,而不是group by上。

 

转载于:https://www.cnblogs.com/HigginCui/p/7450982.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[05] Session概要

1、Session是什么除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态,即Session是服务器端使用的一种保存客户端状态的机制。Cookie在客户端,Session在服务器端。围绕以上的概念来说,其实Session还包含不同的语义&am…

Android 7.0 获取相机拍照图片,适配三星手机拍照,解决三星手机拍照屏幕旋转,判断设备是否有摄像头

方法1 新建/res/xml/file_paths: <?xml version"1.0" encoding"utf-8"?> <paths xmlns:android"http://schemas.android.com/apk/res/android"><external-path name"external_files" path"."/> </p…

算法前戏 递归 二分查找 列表查找

一、递归 概念&#xff1a; 函数直接或者间接的调用自身算法的过程&#xff0c;则该函数称为递归函数。在计算机编写程序中&#xff0c;递归算法对解决一大类问题是十分有效的。 特点&#xff1a; ①递归就是在过程或者函数里调用自身。 ②在使用递归策略时&#xff0c;必须有一…

实现瀑布流的核心代码

.warp {column-count: 2;column-gap: 10px;padding: 5px; }.item {height: 80px;margin-bottom: 10px;break-inside: avoid; }效果如下

Mac OS X Terminal 101:终端使用初级教程以及Xcode

转自 http://www.renfei.org/blog/mac-os-x-terminal-101.html 最近学习苹果认证的《Mac OS X Support Essentials》教程&#xff0c;看到 Command Line 一节有很多实用的知识&#xff0c;下面选取一部分翻译 笔记&#xff0c;整理成此文。 你可以整天驾驶汽车而不用知道如何修…

android studio 获取SHA1值 MD5值

运行CMD 输入 cd .android 回车 输入 keytool -list -v -keystore D:/yohoo.keystore -storepass android 回车 D:/yohoo.keystore------就是你的keystore的位置 &#xff0c; android------- 就是你的keystore的密码 如果提示keytool 不是内部命令或可运行程序。需先配…