COUNT(*)是每个初学者的最爱,但凡漂亮的按下回车时,看着转啊转的进度条,总是有种莫名的喜感。平时总被老板催着干这干那,现在我也能指挥下电脑帮我跑跑数据!

 

虽说平时面试官总爱问 COUNT(*) 有什么坏处啊,为什么要避免使用 COUNT(*) 这类怪问题。真要说起来,他们也是一脸懵圈,因为面试题都有可能是网上随便摘的。

 

至于原理,多少人真正懂呢,真正在乎呢?

 

那么,COUNT(*)的性能真那么差吗?怎么才能提高性能呢!今天就盘它

 

已知 SQL Server 中有这样张表 (其他数据库也适用):

 

CREATE TABLE [dbo].[MobileLink]( 

 [user_id] [varchar](50) NULL, 

 [item_id] [varchar](50) NULL, 

 [behavior_type] [varchar](50) NULL, 

 [user_geohash] [varchar](50) NULL, 

 [item_category] [varchar](50) NULL, 

 [time] [varchar](50) NULL 

笨拙的堆表(Heap Table)

这张表没有索引,是张堆表(Heap Table). 总共有4000多万条数据。

 

第一次,运行 count(*)

 

SELECT COUNT(*) AS CNT  

FROM dbo.MobileLink 

 

 

可以看到运行大约花了 3 秒时间 执行计划也简单,走了全表扫描

dawei

【声明】:邵阳站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。