在项目中,有时候时间紧,我们往往比较关注功能,对于性能关注度没有那么高,书写的SQL能够支持功能即可,但是在线上运行过程中,会出现各种问题,sql太慢,这时候我们的第一反应是是不是没走索引,于是找到DBA说加个索引,但是其实有了索引查询未必快,具体问题需要具体分析,对于查询,我们可以自己通过explain来分析一下,这样和DBA沟通起来会非常方便。

这里顺便总结一下mysql的监控情况,linux的系统级别监控就不提了,因为mysql是IO密集型应用,所以重点关注iowait,对于mysql本身,qps(每秒内查询的次数)TPS(每秒内提交的事务,可以理解为insert+update+update),thread running(当前处于活动状态的数据库连接数),最重点的就是RT,貌似mysql没发直接查看响应时间,这个DBA写工具解决,这个指标可以视为在紧急情况下首要关注的,其次还有innodb层的监控,这个作为开发就比较业余了。

这里抄袭一下索引设计的几个原则:

A、设置索引项,应该是出现在where后面的列,或者连接字句中出现的列;

B、使用唯一索引,索引的基数越大,索引查询的效果越好,举例:查询条件中含有索引字段和非索引字段的时候,会优先走索引筛选出数据,然后在数据中回表过滤没有走索引的字段,但是Mysql任务,如果索引筛选出的数据量大于20%,会认为此时走索引效果不如全表扫描,继而放弃索引,走全表扫描来查询;

C、使用短索引,例如一个属性200多位,其实索引只要创建前几位效果会好;

D、最左原则,组合索引中,灵活运用最左前缀;

E、不要过度使用索引,索引会占用空间,影响写入的速度;

(1)慢SQL如何获取?

应用程序能够感知到SQL慢,因为慢了,提供服务就慢,系统吞吐自然就上不去。这时候可以在mysql上面查看慢SQL的日志,这个文件看起来不是很方便,DBA通过工具把这些日志加工成比较容易分析,能够很直观的看出慢SQL是啥,以及SQL执行花费的时间和执行的时间点。获取了这些慢SQL,就有了分析的依据。

(2)如何分析SQL为啥慢了?

mysql提供了一个工具来分析SQL执行查询的时候的情况,使用很简单:explain select语句

输出的结果是表格,各个字段的解释如下:

select_type

simple:简单表,即不使用表连接或者子查询;

primary:主查询

union:union中的第二个或者后面的查询语句

subquery:子查询中的第一个select

table

输出结果集的表

type

表连接的类型

system:表中仅有一行,即常量表

const:单表中最多有一个匹配行,主键或者唯一索引

eq_ref:对于前面的每一行,在此表中只查询一条记录,简单说就是多表查询中使用主键或者唯一索引

ref:和eq_ref类似,区别在于使用的是普通的索引

ref_or_null:和ref类似,区别在于查询总有NULL的查询

index_merge:索引合并优化

unique_subquery:in后面是一个查询主键的子查询

index_subquery:in后面的是一个查询普通索引的子查询

range:单表中的范围查询

index:前面的每一行,都通过查询索引获取数据

all:全表扫描,性能最差

possible_keys

查询时可能用到的索引

key

查询时实际用到的索引

key_len

索引字段的长度

ref

rows

扫描行的数量

extra

执行情况的说明和描述

分享到:

2012-12-29 14:40

浏览 3295

分类:互联网

评论

如何掌握mysql的查询语句_如何分析mysql的查询语句相关推荐

  1. mysql数据库视图原理_详细分析mysql视图的原理及使用方法

    前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详 ...

  2. 易语言mysql复制表语句_易语言SQL数据库查询语句

    一.Select语句: select语句除了可以查看数据库中的表格和视图的信息外,还可以查看SQL Server的系统信息.复制.创建数据表.其查询功能强大,是SQL语言的灵魂语句,也是SQL中使用频 ...

  3. mysql执行事务的语句_详解MySQL执行事务的语法和流程

    摘要:MySQL 提供了多种存储引擎来支持事务. MySQL 提供了多种存储引擎来支持事务.支持事务的存储引擎有 InnoDB 和 BDB,其中,InnoDB 存储引擎事务主要通过 UNDO 日志和 ...

  4. 如何监控和优化mysql查询性能_如何监视MySQL的性能

    这里列出了一些如何监视你安装的mysql性能的一些ideas.监视总是一个持续的过程.你需要知道哪种模式对你的数据库是好的,什么是问题的表象,甚至是危险的情况. 一下列出了用来去监视你的系统的主要参数 ...

  5. mysql query 查询失败_如何在mysql进行查询缓存及失败的解决方法

    都知道函数在使用前需要弄清楚参数的属性,这样才能对函数的使用有较好的了解.有些小伙伴学习了查询缓存后,直接进行了下一步的实战操作.这里小编想提醒大家,开始操作之前一定要先设置参数,不然就会出现问题.下 ...

  6. mysql子查询设置_什么是mysql子查询?如何利用子查询进行过滤?

    子查询 MySQL 4.1引入了对子查询的支持,所以要想使用本章描述的SQL,必须使用MySQL 4.1或更高级的版本. SELECT语句 是SQL的查询.迄今为止我们所看到的所有 SELECT 语句 ...

  7. 数据库逻辑删除的sql语句_通过数据库的眼睛查询sql的逻辑流程

    数据库逻辑删除的sql语句 Structured Query Language (SQL) is famously known as the romance language of data. Eve ...

  8. mysql修改语句_序言:MySQL与Navicat安装Tips

    一.数据库相关的基础知识 1.1 数据分析师主要集中在select高效查找上,纯粹的底层运维就不需要太关注: 1.2 数据库与表 类比sheet是表,整个Excel文件是一个数据库: 1.3 行与列 ...

  9. 如何提高mysql查询效率_如何提高MySQL查询效率

    MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我在开发一个P2P应用的时候曾经使用MySQL来保存P2P节点,由于P2P的应用中,结点数动辄上万个,而且节点变化频繁,因此一 ...

  10. db2 如何导出insert语句_实用技术:MYSQL特别实用的几种SQL语句送给大家,让你的SQL高大上...

    整理自公众号:[程序员闪充宝] 在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑.减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一 ...

最新文章

  1. linux查看网络带宽_每天一个Linux命令之~wget命令
  2. Windows使用CLion 远程调试Linux程序
  3. ElasticSearch插件安装
  4. aidl生成java文件_Android AIDL自动生成Java文件测试
  5. linux sort 命令详解(转 )
  6. 【机器学习】Lasso回归(L1正则,MAP+拉普拉斯先验)
  7. 织梦CMS内核宝宝算命取名企业模板
  8. PrismJS,一款漂亮的代码高亮工具
  9. MySQL: InnoDB 还是 MyISAM?
  10. 毕设项目 - 基于SSM的教师工作考核绩效管理系统(含源码+论文)
  11. 【长篇肝文7万字】模电/数电/单片机/计算机组成原理/电力电子常见笔试/面试题(合集)未完更新ing
  12. element ui 弹窗在IE11中关闭时闪现问题修复
  13. QComboBox使用讲解
  14. 常用网络测试的命令的实验报告计算机网络,实验一常用网络命令的使用实验报告-20210409133504.docx-原创力文档...
  15. 广东省的身份证号码开头
  16. 最危害程序员职业生涯的三大观念
  17. C#操作三菱FX系列PLC数据
  18. Jupyterlab安装和配置
  19. 安卓系统培训!系统盘点Android开发者必须掌握的知识点,BAT大厂面试总结
  20. 写博客的主要动力来源

热门文章

  1. 安装Ubuntu系统后的配置工作
  2. Visual Studio 2017各版本离线安装包获取以及安装教程
  3. 收藏的一些github开源项目,在这里记录一下
  4. java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方...
  5. 详解MessageBox(),MsgBox函数的正确使用
  6. 红莲之弓矢(进击的巨人主题曲)
  7. 静态初始化--我的理解
  8. mysql identity_insert_由MYSQL SET IDENTITY_INSERT tablename ON;准确方法
  9. python使用协程_Python使用协程进行爬虫
  10. java 邮箱模板_Java:Spring同时集成JPA与Mybatis