Sql server 在一个查询中混合聚合和前1
在下面的选择中,我有2个聚合和5个前1个字段Sql server 在一个查询中混合聚合和前1,sql-server,sql-server-2012,Sql Server,Sql Server 2012,在下面的选择中,我有2个聚合和5个前1个字段 select * from ( select sum(case when field2 = 1 then 1 end) over (partition by field0) as field5, max(case when field3 = 1 then field4 end) over (partition by field0) as field6, -- above is 2
select *
from (
select sum(case when field2 = 1 then 1 end) over (partition by field0) as field5,
max(case when field3 = 1 then field4 end) over (partition by field0) as field6,
-- above is 2 aggregates
-- below is select 5 fields based on top 1 order by desc
row_number() over (partition by field0 order by field1 desc) as rowNum
field0,
field1,
field2,
field3,
field4
from table1
--in my case i'm doing an innser join on field0 on an inserted table from a trigger
) x
-- below is the top 1 related filter
where x.rowNum = 1
有没有更好的方法写这个?(意味着执行计划更快和/或语法更好)
执行计划的当前部分
这应该稍微优化一下:
select field0,
field1,
field2,
field3,
field4,
field5,
field6
from (
select field0,
sum(case when field2 = 1 then 1 end) as field5,
max(case when field3 = 1 then field4 end) as field6,
from table1
group by field0
) t1
cross apply
(
select top 1 field1,
field2,
field3,
field4
from table1 t2
where t2.field0 = t1.field0
order by field1 desc
) ca
这应该稍微优化一下:
select field0,
field1,
field2,
field3,
field4,
field5,
field6
from (
select field0,
sum(case when field2 = 1 then 1 end) as field5,
max(case when field3 = 1 then field4 end) as field6,
from table1
group by field0
) t1
cross apply
(
select top 1 field1,
field2,
field3,
field4
from table1 t2
where t2.field0 = t1.field0
order by field1 desc
) ca
你是什么意思?向我们展示当前的执行计划?性能问题应包括
EXPLAIN ANALYZE
和一些关于表大小、索引、当前时间性能、期望时间等的信息。Slow
是一个相对术语,我们需要一个实际值进行比较。@JuanCarlosOropeza字段0,1,2,3,4根据行数排名前1(按描述排序)@JuanCarlosOropeza i添加了执行工厂您的图像中执行计划的部分仅占资源成本的8%。我想说,瓶颈可能在于计划的其他部分。是的,我想说的是,图片不完整,因为只有8%是可见的。你是什么意思?向我们展示当前的执行计划?性能问题应包括EXPLAIN ANALYZE
和一些关于表大小、索引、当前时间性能、期望时间等的信息。Slow
是一个相对术语,我们需要一个实际值进行比较。@JuanCarlosOropeza字段0,1,2,3,4根据行数排名前1(按描述排序)@JuanCarlosOropeza i添加了执行工厂您的图像中执行计划的部分仅占资源成本的8%。我想说,瓶颈可能在于计划的其他部分。是的,我想说的是,图片不完整,因为只有8%是可见的。