之前很早有篇文章:http://www.04007.cn/article/403.html 介绍使用timestampdiff和profile来进行SQL用时的分析,当时并没有支持毫秒级的测算,有些不足。MYSQL里可以使用UNIX_TIMESTAMP来得到秒级时间,也可以使用select unix_timestamp(current_timestamp(3));来得到毫秒级时间,因此可以方便地使用其来计算差值从而统计SQL执行的用时。如下:本文地址:http://www.04007.cn/article/1023.html,未经许可,不得转载.
set @st = unix_timestamp(current_timestamp(3)); #要执行的语句 insert into table.... set @en = unix_timestamp(current_timestamp(3)); #下面的除数5是根据你执行的条数来的。 select round((@en - @st)/5,3) as avg_time;本文地址:http://www.04007.cn/article/1023.html,未经许可,不得转载.
将要执行的语句写在上面的insert into处,执行多少遍就复制多少条语句,不过看着不够优雅。想用while循环把它实现,不过这样只能在存储过程中使用了。本文地址:http://www.04007.cn/article/1023.html,未经许可,不得转载.
DELIMITER // DROP PROCEDURE IF EXISTS `cicle` ; CREATE PROCEDURE cicle () BEGIN DECLARE i INT; SET i = 0 ; WHILE i < 10 DO #要执行的语句 insert into table.... SET i = i + 1 ; END WHILE ; END// DELIMITER ; set @st = unix_timestamp(current_timestamp(3)); CALL cicle (); set @en = unix_timestamp(current_timestamp(3)); select round((@en - @st)/5,3) as avg_time;本文地址:http://www.04007.cn/article/1023.html,未经许可,不得转载.
不过在执行上面的语句的时候,SQL能正常执行,循环的SQL也能查出结果,但是执行用时数据并没有显示出来,没有去细查原因。路过的朋友有新发现欢迎补充。本文地址:http://www.04007.cn/article/1023.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/1023.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |