请看一下Select Count(*) From TableName与Select ID From TableName在性能上有什么差别

luoqing 2002-11-27 04:23:02
假若数据库中的该表有100万条记录.
请看一下Select Count(*) From TableName与Select ID From TableName在性能上有什么差别

我有SQL Server性能分析了一下好像除了I/O性能不同外其他大致相同.比为都是遍历整个表.

...全文
143 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jery_lee 2002-11-28
  • 打赏
  • 举报
回复
count 就是取得查询条件记录的总数
id 只是取得最大的记录ID
可能不同!
gotoyangjm 2002-11-28
  • 打赏
  • 举报
回复
Count(ID)可能不行,如果中间有部分记录已经被删除了就得不到实际结果。
china_hfz 2002-11-27
  • 打赏
  • 举报
回复
senzz(森) 说法是对的
count(*) 和 count(1) 的值是不一样的
sunthing 2002-11-27
  • 打赏
  • 举报
回复
如果数据库记录连续:
select top 1 id from tablename order by id desc
leimin 2002-11-27
  • 打赏
  • 举报
回复
是大致差不多,应为SQL SERVER会自动优化,针对Select Count(*) From TableName与Select ID From TableName,SQL SERVER会自动根据CLUSTERED INDEX进行COUNT.
senzz 2002-11-27
  • 打赏
  • 举报
回复
我觉得
count(*) 的速度最快
SQL Server只扫描行数,不比较其内容是否为空。


count(id) 第二
SQL Server扫描id列,并比较是否为空
CrazyFor 2002-11-27
  • 打赏
  • 举报
回复
上面错了,
select count(id) from yourtable 应该是最快了。

CrazyFor 2002-11-27
  • 打赏
  • 举报
回复
select max(id) from yourtable
luoqing 2002-11-27
  • 打赏
  • 举报
回复
我没有带Where语句,这是整个遍历,而且上面的ID也聚簌索引.
再问个问题,怎样最快得到表中有多少记录?
CrazyFor 2002-11-27
  • 打赏
  • 举报
回复
如果你对ID加了索引,速度就快多了。

Select Count(*) From TableName会找表中的ID字段,如果发现
也就是selelct count(ID) from tabelname

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧