使用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 ...
随机推荐
- ECSHOP验证码背景图修改教程
ECSHOP验证码背景图修改教程 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2013-11-18 ECSHOP验证码背景图修改教程: ECSHOP前后台的某些地 ...
- js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性的区别
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- find只查当前目录 和 -exec和xargs区别
1.find默认查找当前目录和子目录,通过maxdepth限制只查当前目录: find . -maxdepth 1 -type f -name "*.php" 2. find . ...
- 基于REST架构的Web Service设计
来自: http://www.williamlong.info/archives/1728.html 先前我曾经介绍过利用Apache Axis实现基于SOAP的Web Service实现技术和相关代 ...
- .NET中使用Memcached的相关资源整理
Memcached官方站点:http://www.danga.com/memcached/ Memcached Win32 1.2.6下载:http://code.jellycan.com/memca ...
- 使用C#进行图片转换格式,缩放,自动旋转,保留exif(转载)
这几天心血来潮做了一个批量图片缩放,转换格式,并且可以根据exif的信息旋转图片,校正exif信息后保存的小程序.根据配置文件 指定需要的功能. 1 2 3 4 5 6 7 8 9 10 11 12 ...
- 操作sqlserver数据库常用的三个方法
1. ADO.NET -> 连接字符串,常用的两种方式: server=计算机名或ip\实例名;database=数据库名;uid=sa;pwd=密码; server=计算机名或ip\实例名;d ...
- vim设置语法高亮
在vim安装目录中的_vimrc修改,加上以下的代码. set nu! colorscheme desert syntax enable syntax on
- Javascript网页摇一摇
function init(){ if (window.DeviceMotionEvent) { // 移动浏览器支持运动传感事件 window.addEventListener('devicemot ...
- C++ Primer Plus第6版18个重点笔记
下面是我看<C++ Primer Plus>第6版这本书后所做的笔记,作为备忘录便于以后复习. 笔记部分 C++的const比C语言#define更好的原因? 首先,它能够明确指定类型,有 ...