count 小知识

平时我们如果想count 表dbo.person中的记录,一般写法是

select count(1)

from dbo.person

这种写法很简单,但是不利于观察,当很多个表放在一起count时,很不便于观察

于是可以利用一个临时表(dbo.temp),然后会把影响的行数记录在log中,这是观察log就可以看到了(假设address 是unique,方便下面优化)

select address as address_num

into dbo.temp

from dbo.person

这是就可以达成上面的效果了,但是address字段又比较长,会占用很多空间,浪费资源了,我们仅仅只是需要count 表dbo.person 一下,所以不需要完整的address记录,so

select left(address,1) as address_num

into dbo.temp

from dbo.person

ok啦,现在就可以实现在log中可以看到count的num了,又不用浪费空间啦~~

 

 

 

在使用Union All查询结果集时,统计总数的方法会有所不同。一种常见的方法是将Union All两端的数量字段统一,并将其作为一个子表,然后执行SUM(count)操作来获取总数。 在效率排序方面,按照count(字段) < count(主键id) < count(1) ≈ count(*)的顺序进行排序,所以在选择统计方法时,尽量使用count(*)来获取数量。 具体的查询流程如下: 1. 首先执行两个子查询,分别统计第一个表和第二个表的记录数量,将结果作为两个临时字段tmpcount返回。 2. 然后将这两个子查询的结果集合并为一个临时表A。 3. 最后执行SUM(tmpcount)操作,将临时表A中的tmpcount字段求和,得到最终的总数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [pg(union all)统计总数count](https://blog.csdn.net/qxianx/article/details/85056183)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [MySQL知识点补充(不同count()的用法、union执行流程、group by语句)](https://blog.csdn.net/qq_40378034/article/details/91128275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值