使用show profiles分析SQL性能
如何查看执行SQL的耗时
使用show profiles分析sql性能。
Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后。
查看数据库版本
mysql> select version();
profile默认是不打开的
mysql> show profiles;
Empty set (0.02 sec)
mysql> show variables like "%pro%";
可以看到profiling 默认是OFF的。
开启profile,然后测试
开启profile
mysql> set profiling=1;
判断记录是否存在的几种方法
把数据写入到数据库的时,常常会碰到先要检测要插入的记录是否存在,然后决定是否要写入。
最直观的办法,就是在代码里执行一次全表查询,然后根据查询结果是否为空决定下一步操作,这样显然非常耗费性能。
下面是几种性能较好的查询方法。
1.直接查询,全表查询在数据量比较大的情况下,性能消耗会很大
sql语句:select count(*) from tablename;
然后读取count(*)的值判断记录是否存在。对于这种方法性能上有些浪费,我们只是想判断记录记录是否存在,没有必要全部都查出来。
2.sql语句:select 1 from tablename where col = col limit 1;
然后读取语句执行所影响的行数。
当然这里limit 1很重要。这要mysql找到一条记录后就不会在往下找了。这里执行所影响的行数不是0就是1,性能提高了不少。
如果你用的是PDO,可以用rowCount(),很容易就都到执行所影响的行数。
3.SELECT EXISTS(SELECT * FROM tablename WHERE col =col )
只能判断是否存在记录,子查询中的SELECT *在执行时会被忽略掉。
以上三种方法,在MySQL中测试,数据量一百万左右,差距不是特别大,

其中,速度最快的是使用下面的格式查询,
SELECT EXISTS(SELECT 1 FROM `tbl` WHERE `id` =11111)
大家在以后的查询中可以参考上面的方法。
参考
查看mysql语句运行时间的2种方法
MySQL查找SQL耗时瓶颈SHOW profiles
mysql 判断是否存在数据的4种方法
使用show profiles分析SQL性能的更多相关文章
- mysql show profiles使用分析sql性能
mysql show profiles使用分析sql性能 Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后. 查看一下我的数据库版本 mysql> ...
- 【MS SQL】通过执行计划来分析SQL性能
原文:[MS SQL]通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1.通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO O ...
- mysql 分析3使用分析sql 性能 show profiles ;
show variables like '%profiling%'; 查看状态 查看时间去哪了``` set profiling=1;// 打开 show profiles; 查看执行过的 ...
- MySQL高级篇 | 分析sql性能
在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越 ...
- mysql show profiles 使用分析sql 性能
Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后. 查看一下我的数据库版本 MySQL> Select version(); +-------- ...
- 使用Oracle执行计划分析SQL性能
执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述.即就是对一个查询任务,做出一份怎样去完成任务的详细方案. 如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的 ...
- 使用Profiles分析SQL语句运行时间和消耗资源
打开profiling,默认是没开启的. mysql> set profiling=1; 运行要分析的SQL语句 mysql> select count(1) from wechat_em ...
- show profiles 分析sql耗时瓶颈
1.首先查看是否开启profiling功能 SHOW VARIABLES LIKE '%pro%'; 或者 SELECT @@profiling; 2.开启profiling ; 3.执行sql语句例 ...
- Oracle DB SQL 性能分析器
• 确定使用SQL 性能分析器的优点 • 描述SQL 性能分析器工作流阶段 • 使用SQL 性能分析器确定数据库更改所带来的性能改进 SQL 性能分析器:概览 • 11g 的新增功能 • 目标用户:D ...
随机推荐
- Java初学(二)
一.数据类型 在定义Long或者Float类型变量的时候,要加L或f(大小写无关,只是便于识别,建议不要小写L) 整数默认是int,浮点数默认是double 二.java字符 java语言采用的是Un ...
- Deep Learning in a Nutshell: Core Concepts
Deep Learning in a Nutshell: Core Concepts This post is the first in a series I’ll be writing for Pa ...
- prototype.js $F()函数介绍
$F()是一个能够简化编码量的函数, 对于字段输入控件有效,包括input.textarea.select等,该函数的输入参数为这些输入控件元素对象的id或元素对象本身,函数负责返回 这些输入控件元素 ...
- linux在所有文件中查找某一个字符
# find <directory> -type f -name "*.c" | xargs grep "<strings>" < ...
- mysql 多表联合更新
UPDATE mall_order moLEFT JOIN mall_order_goods mog ON mo.id = mog.order_idSET mo.ratio=0.08WHERE mog ...
- sql 联合查询并更新
update sales set sales.adminId = t.adminIdfrom (select a.adminId,a.realName from sales ,admin_admini ...
- unity3d camera.culling mask
原地址:http://www.cnblogs.com/88999660/archive/2013/03/14/2959439.html 官方文档对CullingMask的注释只是说了通过位移运算符,可 ...
- xocde真机测试 内存查看
如上, 有的时候真机调试, 内存和cpu占用没有被展示出来, 那么真机测试的时候怎么查看我们当前使用的内存呢, 有办法: instrument->activity monitory 点击左上角的 ...
- MBProgressHUD使用
//方式1.直接在View上show HUD = [[MBProgressHUD showHUDAddedTo:self.view animated:YES] retain]; HUD.delegat ...
- meanshift和camshift
参考:http://www.cnblogs.com/tornadomeet/archive/2012/03/15/2398769.html 照着这位大神的代码运行了一下,发现meanshift的跟踪效 ...