精华内容
下载资源
问答
  • 统计mysql下的binlog里的语句执行次数

    千次阅读 2016-03-28 15:55:12
    mysqlbinlog --no-defaults --base64-output=decode-rows -v -v binlog.000010 | awk '/###/ {if($0~/UPDATE|INSERT|DELETE/)count[$2" "$NF]++}END{for(i in count) print i,"\t",count[i]}' | column -t | sort
    mysqlbinlog  --no-defaults --base64-output=decode-rows  -v -v binlog.000010 |  awk '/###/ {if($0~/UPDATE|INSERT|DELETE/)count[$2" "$NF]++}END{for(i in count) print i,"\t",count[i]}' | column -t | sort -k3nr
    
    展开全文
  • 多重for循环嵌套中语句执行次数

    千次阅读 2019-08-11 20:13:23
    实例代码 for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { ...以上代码中,求count++语句执行次数。 其实这段代码中求count++...

    实例代码

    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
           for (int k = j + 1; k < n; k++) {
                count++;
           }
        }
    }
    

    以上代码中,求count++语句的执行次数。

    其实这段代码中求count++语句的执行次数等价于:从n个整数中取出三个整数的组合总共有多少种(不考虑顺序,1,2,3 2,3,1 等算一种)。

    求解过程

    n&gt;2n&gt;2时:

          i=0j=1(n1)count((n1)1)+(n3)+(n4)++2+1当i=0时,j=1\sim (n-1),count的执行次数为((n-1)-1)+(n-3)+(n-4)+\cdots+2+1

          i=1j=2(n1)count((n1)2)+(n4)+(n5)+2+1当i=1时,j=2\sim (n-1),count的执行次数为((n-1)-2)+(n-4)+(n-5)\cdots+2+1

          i=2j=3(n1)count((n1)3)+(n5)++2+1当i=2时,j=3\sim (n-1),count的执行次数为((n-1)-3)+(n-5)+\cdots+2+1

                                              \vdots

          i=n3j=(n2)(n1)count1当i=n-3时,j=(n-2)\sim (n-1),count的执行次数为1

          i=n2j=(n1)count0当i=n-2时,j=(n-1),count的执行次数为0

    可以看出,每次i产生变化时,count++语句的执行次数都是一个等差数列,可由等差数列求和公式:
    Sn=n(a1+an)2=1+2++n=n(1+n)2=n2+n2 S_n=\frac{n(a_1+a_n)}{2}=1+2+\cdots+n=\frac{n(1+n)}{2}=\frac{n^2+n}{2}
    count++总执行次数Sn:S_n:
    Sn=(n2)2+(n2)2+(n3)2+(n3)2++22+22+12+12=((n2)2+(n3)2++22+12)+((n2)+(n3)++2+1)2 S_n=\frac{(n-2)^2+(n-2)}{2}+\frac{(n-3)^2+(n-3)}{2}+\cdots+\frac{2^2+2}{2}+\frac{1^2+1}{2}\\ =\frac{((n-2)^2+(n-3)^2+\cdots+2^2+1^2)+((n-2)+(n-3)+\cdots+2+1)}{2}
    再由公式:
    12+22++n2=n(n+1)(2n+1)6 1^2+2^2+\cdots+n^2=\frac{n(n+1)(2n+1)}{6}
    得:
    Sn=(n2)(n2+1)(2(n2)+1)6+(n2)2+(n2)22=n(n1)(n2)6 S_n=\frac{\frac{(n-2)(n-2+1)(2(n-2)+1)}{6}+\frac{(n-2)^2+(n-2)}{2}}{2}\\ =\frac{n(n-1)(n-2)}{6}
    0&lt;n&lt;20&lt;n&lt;2时:

    count++的执行次数为0,n&gt;2n&gt;2的公式仍适用于0&lt;n&lt;20&lt;n&lt;2的情况。

    即:

    count++语句的执行次数为n(n1)(n2)6\frac{n(n-1)(n-2)}{6}

    参考文章

    一个小问题:计算3层循环的执行次数

    展开全文
  • 如下代码段 for ( int i=0;i;i++) for ( int j=i+1;j;j++) for ( int k=j+1;k;k++) if(xxxxxx) 为什么这段算法的执行次数为 N(N-1)(N-2)/6 啊?这个/6是怎么算出来的呢?
  • SELECT TOP 2000 ST.text AS '执行的SQL语句', QS.execution_count AS '执行次数', QS.total_elapsed_time AS '耗时', QS.total_logical_reads AS '逻辑读取次数', QS.total_logical_writes AS '...
    SELECT TOP 2000 
           ST.text AS '执行的SQL语句',
           QS.execution_count AS '执行次数',
           QS.total_elapsed_time AS '耗时',
           QS.total_logical_reads AS '逻辑读取次数',
           QS.total_logical_writes AS '逻辑写入次数',
           QS.total_physical_reads AS '物理读取次数',       
           QS.creation_time AS '执行时间' ,  
           QS.*
    FROM   sys.dm_exec_query_stats QS
           CROSS APPLY 
    sys.dm_exec_sql_text(QS.sql_handle) ST
    WHERE  QS.creation_time BETWEEN '2018-05-01 00:00:00' AND '2018-05-02 11:00:00' 
    ORDER BY
         QS.total_elapsed_time DESC
    

    展开全文
  • 计算语句频度

    千次阅读 多人点赞 2020-08-06 23:16:01
    时间频度 一个算法执行所耗费的时间,从理论上是...并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。

    这些数据结构题集(严蔚敏)书上的题,这些是我做题的笔记


    语句频度 T(n),又被称为时间频度,指的是该语句重复执行的次数

    第一题

    int i = 1;
    int k = 0;
    int n = 10;
    while(i <= n-1){
    	k += 10 * i;  /*计算该语句频度*/
    	i++;
    }
    

    while 循环了多少次,就是该语句的频度
    while 执行一次 i 自增 1 ,当 i>n-1 时退出,就是当 i=n 时退出 while ,i 一开始为 1,所以 while 总共循环了 n-1 次;
    频度 :n-1


    第二题

    int i = 1;
    int k = 0;
    int n = 10;
    do{
    	k += 10 * i;  /*计算该语句频度*/
    	i++;
    }while(i <= n-1);
    

    循环了多少次,就是该语句的频度
    循环体执行一次 i 自增 1 ,当 i>n-1 时退出,就是当 i=n 时退出循环体,i 一开始为 1 ,所以循环体总共循环了 n-1 次;
    频度 :n-1


    第三题

    int i = 1;
    int k = 0;
    int n = 10;
    while(i <= n-1){
    	i++;
    	k += 10 * i;  /*计算该语句频度*/
    }
    

    循环了多少次,就是该语句的频度
    循环体执行一次 i 自增 1 ,当 i>n-1 时退出,就是当 i=n 时退出循环体,i 一开始为 1 ,所以循环体总共循环了 n-1 次;
    频度 :n-1


    第四题

    int k = 0;
    int n = 10;
    for(int i = 1; i <= n; i++){
    	for(int j = i; j<=n; j++){
    		k++;    /*计算该语句频度*/
    	}
    }
    

    第一层循环 n 次
    第二层循环 n+(n-1)+(n-2)+…+2+1 = n(n+1)/2 ,所以 k++ 执行了 n(n+1)/2 次
    频度 :n(n+1)/2


    第五题

    int n = 100;
    int i = 0;
    while(n >= (i+1)*(i+1)){
    	i++;    	/*计算该语句频度*/
    }
    

    循环体执行 floor(sqrt(n)) 次
    频度: n\lfloor \sqrt{n}\rfloor


    第六题

    int x = 0;
    int i,j,k;
    int n = 10;
    for(i = 1; i <= n; i++) {
    	for(j = 1; j <= i ; j++) {
    		for(k = 1; k <= j; k++) {
    			x += 1;   /*计算该语句频度*/
    		}
    	}
    }
    

    第一层 n
    第二层 1+2+3+4+…+n
    第三层 1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+…+n) = n(n+1)(2n+3)/12
    频度:n(n+1)(2n+3)/12


    第七题

    int i = 1;
    int j = 0;
    int n = 10;
    while(i+j <= n){
    	if(i > j)/*计算该语句频度*/ j++;
    	else i++;
    }
    

    注意:if 语句不管真假都会判断一次,所以循环了多少次就判断了多少次 if 语句
    当 i+j=n+1 时退出循环
    所以循环次数为 (n+1)-1 = n
    所以频度为 n


    第八题

    int x = 91;
    int y = 100;
    while(y > 0){
    	if(x > 100){  /*计算该判断语句频度*/
    		x -= 10;
    		y--;
    	}else{
    		x++;
    	}
    }
    

    看 while 循环体中的 if 语句频度就看 while 循环次数
    开始 x=91 ,循环了 10 次,每次都执行 else ,直到 x=101
    当 x=101,循环了 1 次,if 条件成立,x 又变成了 91 ,而 y=99;
    while 循环还没退出之前都是按照这规律循环,直到 y=0 退出 while ,一共重复了 100 遍上面的规律,每次 11 次循环,
    所以该语句频度为 100*11 = 1100


    注意

    int k = 1;
    for(int i = 1; i <= n ;i++){  //(1)
    	k++;     //(2)
    }
    

    (1)语句频度是n+1

    i 变量在第一个 for 循环中,从取 i = 0 开始执行,直到i=n时为止,至此,i 执行了n次。加上最后i=n+1跳出循环的判断,故,频度共n+1 次;

    (2)语句频度是n

    当 i = n+1时跳出循环,所以里面的循环体一共执行了 n 次0


    时间复杂度

    简单的说,就是保留语句频度的最高次幂,并且把系数去掉。 如T(n)=2n2+n+1=O(n2)T(n)=2n^2+n+1=O(n^2)

    展开全文
  • 示例代码展示 1.for(i=1;i;i++){ //n+1次 2. for(j=1;j;j++){ //n(n+1)次 3....k 示例代码为两个n × n矩阵相乘的算法 我们把算法所耗费的时间定义为该算法每条语句的频度之和: T(n)=2n3 +3n2 2n+1
  • 下面程序段中带下划线的语句执行次数的数量级是( nlog2nnlog_2nnlog2​n )。 i:=1; WHILE i<n BEGIN FOR j:=1 TO n DO x:=x+1; i:=i*2; END 分析: i:=1; WHILE i<n BEGIN FOR j:=1 TO n DO x:=x+1; ...
  • 计算一条SQL语句执行时间

    千次阅读 2018-03-16 09:35:02
    事情因为本来是想查下执行时间最长的sql语句,觉得ELAPSED_TIME是执行时间(单位微秒),而executions为执行次数,所以相除肯定就是单条sql的执行时间了。 而在V$SQL中elapsed_time 代表了执行完毕的时间 , 也就是...
  • 下面的SQL语句可以查看SQL语句执行效率包括编译时间、执行时间、逻辑读取总次数、逻辑写入总次数、所用的CPU总时间ms等信息 SELECT creation_time N'语句编译时间' ,last_execution_time N'上次执行时间' ,total_...
  • 查看sql语句执行时间或测试sql语句性能
  • MySQL的语句执行情况

    千次阅读 2018-07-31 21:01:04
    下面是对查询语句执行情况的方法介绍。   一、设置STATISTICS STATISTICS选项有PROFILE,IO ,TIME。 SET STATISTICS PROFILE ON:显示每个查询执行后的结果集,代表查询执行的配置文件。 SET STATISTICS IO.....
  • 执行次数最多的top 10 select sql_text,executions from (select sql_text,executions,  rank() over  (order by executions desc) exec_rank  from v$sql) where exec_rank ;
  • 查看sql语句执行时间

    千次阅读 2019-11-05 18:40:02
    2.profiling是否开启(让mysql收集执行语句所用的资源) 0代表 关闭 ——设置为1 打开它 3.打开后 , 写一条select语句 查看情况 4.查看当前会话所产生的所有profiles (第1 2 条语句 我写错了——第三...
  •  可以跟踪sql语句执行过程,如果想跟踪某个时间点前后的语句,可以通过first_load_time时间进行控制。 select * from v$sqlarea where first_load_time>'2010-11-27/09:30:00'; 这个方法查询结果每条记录显示一...
  • 一,通过设置STATISTICS我们可以查看执行SQL时的系统情况。...SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。  SE
  • 原文地址查询语句: SELECT TOP 1000 ST.text AS '执行的SQL语句', QS.execution_count AS '执行次数', QS.total_elapsed_time AS '耗时', QS.total_logical_reads AS '逻辑读取次数', QS.total_logical_w...
  • db2 优化基础 查询执行次数最多的SQL

    千次阅读 2015-12-18 09:40:00
    使用如下语句查找执行次数最多SQLdb2 select * from sysibmadm.SNAPDYN_SQL order by NUM_EXECUTIONS desc,TOTAL_SYS_CPU_TIME_MS desc fetch first 205 rows only >>d:\num_executions.txt打开输出的文件显示如下:...
  • 面试题:for语句执行过程

    千次阅读 2017-12-22 13:52:41
    题目一:(奇虎,360) 判断for(int i=0,k=1;k=0;i++,k++) A....B....C.循环一次也不执行 D.循环只执行一次 ...,是赋值语句,所赋的值就是赋值语句的返回值,这个值正好是0,造成了for语句的条件为”假”,不会执
  • show status SQL语句执行状态的命令 --05

    千次阅读 2018-07-15 17:10:50
    show [session|global] status命令了解各种SQL的执行频率  session表示当前会话(当前连接),global表示全局的(指数据库上次启动至今),...1.1 这个Com_XXX表示每个XXX执行次数,一般比较关心如下四个:  ...
  • int i=1,j,s=0; while (i++) { int p=1; for (j=1;j;j++) p*=j; s=s+p; } 外层循环要n次 p*=j语句执行次数为n(n+1)/2 时间复杂度为0(n^2)
  • 一个功能的实现,可以用多种语句来实现,比如说:while语句、for语句、生成器、列表推导、内置函数等实现,然而他们的效率并不一样。写了一个小程序来测试它们执行的效率。 测试内容:  将一个数字大小为20万的数字...
  • 说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了。...一条 SQL 语句执行的...
  • 提高sql语句执行效率及索引

    千次阅读 2015-09-23 15:16:54
    减少访问数据库的次数:   ORACLE 在内部执行了许多工作 : 解析 SQL 语句 , 估算索引的利用率 , 绑定变量 , 读数据块等。  ( 5 ) 在 SQL*Plus , SQL*Forms 和 Pro*C 中重新设置 ARRAYSIZE 参数 ...
  • Python几种语句执行效率问题

    千次阅读 2014-12-06 08:41:01
    一个功能的实现,可以用多种语句来实现,比如说:while语句、for语句、生成器、列表推导、内置函数等实现,写了一个小程序来测试它们执行的效率。 测试内容:  将一个数字大小为20万的数字,依次取绝对值,放到列表中...
  • SQL语句执行效率及分析

    千次阅读 2017-01-03 15:04:10
    无需在执行存储过程和触发器的每个语句后向客户端发送 DONE_IN_PROC 消息。 29.尽量避免大事务操作,提高系统并发能力。 30.尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理 1、避免...
  • 设置显示sql语句执行时间

    千次阅读 2016-10-25 17:46:45
    输入并运行下面的Transact-SQL命令: ...(表:Order Details,扫描次数 1,逻辑读 10,物理读 1,提前读取 9) SQL Server Execution Times: (SQL Server执行时间:) CPU time = 30 ms, elapsed time = 387 ms.
  • 数据库表中字段上创建的索引,在写SQL语句进行查询时,索引可能会被使用到,也肯能因为SQL语句导致索引在此条SQL语句执行时索引无效。 聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索引顺序与...
  • 在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻辑上做出优化处理,要么是业务特殊性所导致。如果执行频繁的SQL,往往容易...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 255,176
精华内容 102,070
关键字:

怎么计算语句的执行次数