原文:提高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(*) 并不是低效率的 感谢下面朋友指教

本文结束  晚安


最新文章

  1. robocopy 命令小结
  2. python脚本基础总结
  3. JavaScript DOM编程艺术读书笔记(一)
  4. tomcat相关配置技巧梳理
  5. Mine Number(搜索,暴力) ACM省赛第三届 G
  6. GTD时间管理(3)---梳理总结
  7. jquery一个控件绑定多个事件
  8. 解决php json_encode 出现的中文转码、乱码问题
  9. android layout 属性大全
  10. 将数组转换成List
  11. Python 2 到 Python 3的变化
  12. css3之3D翻牌效果
  13. spring mvc项目【转载】
  14. js计算日期相差的天数
  15. 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端
  16. WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@584] - Cannot open channel to 4 at election address Slave3.Hadoop/xxx.xxx.xxx.xxx
  17. Ubantu常用命令
  18. java——IObufferedReader文件输入输出流
  19. 【C++】拷贝构造函数和赋值符函数
  20. SSH远程连接服务

热门文章

  1. win10&hyper上装Ubuntu出现没有找到dev fd0, sector 0 错误
  2. XJOI NOIP模拟题1
  3. Codeforces Round #388 (Div. 2) 749E(巧妙的概率dp思想)
  4. [NC2018-9-9T1]中位数
  5. BZOJ2208 [Jsoi2010]连通数 【图的遍历】
  6. 洛谷 P2173 [ZJOI2012]网络 解题报告
  7. Windows彻底删除不用的dc
  8. Java并发编程--AQS
  9. 51nod 1273 旅行计划——思维题
  10. C# 编写的Windows serice程序. 安装时出现异常!