zoukankan      html  css  js  c++  java
  • 提高MSSQL数据库性能(1)对比count(*) 和 替代count(*)

    文章准备的数据库: Atricles 表   数据量60690000条数据

    ArticleID 主键自增列+自动建立的聚集索引,ATitle nvarchar(100)  Acontent varchar(2000) CreateDate DateTime(8)  

    首先要说的是:select count(*) from table,那么count(*) 和 count(主键) count(文本列)效率比较:  这里是测试主代码

             dbcc freeProcCache  --清空SqlCache

                  SET STATISTICS io ON

            SET STATISTICS time ON

            go

            ----这里是测试语句

            go

            SET STATISTICS profile OFF

            SET STATISTICS io OFF

            SET STATISTICS time OFF

    那么我们来看看:

    SELECT COUNT(*) FROM ATRICLES                          CPU 时间 = 1125 毫秒,占用时间 = 1140 毫秒。

    SELECT COUNT(ATRICLEID) FROM ATRICLES           CPU 时间 = 1093 毫秒,占用时间 = 1094 毫秒

    SELECT COUNT(ATITLE) FROM ATRICLES                 CPU 时间 = 2266 毫秒,占用时间 = 2267 毫秒

    SELECT COUNT(ACONTENT) FROM ATRICLES           CPU 时间 = 2296 毫秒,占用时间 = 2303 毫秒。

    Count(*) 是在处了 count(主键) 之外速度最快的  为什么最快其实我也不知道 - -! 猜想可能是SQL自动做了查询优化

    那么我们是否一定得要 COUNT(*)呢 不是的 大家看这里:

    SELECT ROWS FROM SYSINDEXES WHERE ID = OBJECT_ID('ATRICLES') AND INDID = 1

    那么我们看看它和select count(主键)的比较吧:

    首先是Count(主键)

    表'ATRICLES'。扫描计数 1,逻辑读取 120368 次,物理读取 3 次,预读 120364 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

     SQL Server 执行时间:  CPU 时间 = 2282 毫秒,占用时间 = 21334 毫秒。

    其次是 from SYSINDEXES

    表 'SYSINDEXES'。扫描计数 1,逻辑读取 2 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0次,lob 预读 0 次。

     SQL Server 执行时间:   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

    SYSINDEXES 系统表   所有的表 行集 索引信息 存放在这个表中

    ID =OBJECT_ID('ATRICLES') ID的意思是 索引所属的表ID

    INDID 表示在聚集索引上查找 因为主键在建立的时候已经自动的建立了聚集索引

    ROWS 基于 indid = 0 和 indid = 1 的数据级行计数,如果 indid >1,则该值包含重复的计数。

    这篇文章想说的是: 在分页情况下 可以考虑使用上面语句查找数据行   AND  count(*) 并不是低效率的 感谢下面朋友指教

    本文结束  晚安

  • 相关阅读:
    CF598E Chocolate Bar 题解 动态规划
    CF864E Fire 题解 背包DP
    用 程序 解决 windows防火墙 的 弹窗 问题
    windbg 使用与技巧
    bat 下 字符串拆分 类似 split 可以使用 for /f delims
    vs2013 在按F5调试时,总是提示 “项目已经过期”的解决方案
    代理与反向代理
    关于维护用户状态的一致性
    视频的裁剪后缩放功能。
    通信协议的设计
  • 原文地址:https://www.cnblogs.com/mmmjiang13/p/1701000.html
Copyright © 2011-2022 走看看