【发布时间】:2019-05-03 10:22:56
【问题描述】:
我无法让这个查询工作:
不起作用
select
Region.*, count(secteur.*) count
from
Region
left join
secteur on secteur.region_id = Region.id
我找到的解决方案是这样,但有没有更好的使用连接的解决方案,或者这不会影响性能,因为我有一个非常大的数据集,大约 500K 行
工作但担心性能问题
select
Region.*,
(select count(*)
from Secteur
where Secteur.Region_id = region.id) count
from
Region
【问题讨论】:
-
你为什么不用
COUNT(Single_Colunm) -
@PrashantPimpale 因为it makes no difference.
-
@RuudHelderman 是的,所有情况都相同吗?因为有一个查询需要 1 分 13 秒才能执行,我使用的是
COUNT(*),但是一旦我更改为COUNT(_id)这是 int 值,现在它需要 10 到 15 秒才能执行! -
@PrashantPimpale 用冷缓存还是热缓存测试?指数统计数据是最新的吗?
_id是否持有空值?除了持续时间,你是否测量了 I/O 和 CPU?您是否比较了查询计划?什么版本和版本的 SQL Server?我愿意认真对待您的主张,但如果没有MCVE,则该主张毫无意义。
标签: sql sql-server select sql-server-2012 count