Sql 在该查询中需要-只需从CTE中删除表landingpages,并使用landingpageurlfilters.landingpageid
e、 gSql 在该查询中需要-只需从CTE中删除表landingpages,并使用landingpageurlfilters.landingpageid,sql,sql-server,Sql,Sql Server,e、 g 我认为这与我上面复制的CTE得出的结果相同。首先,您的统计数据看起来非常不一致。估计3700行,实际219000行。这表明,至少统计信息更新可能会改变优化器所做的选择。由于这些行估计,优化器正在选择一个seek和一个嵌套循环操作,其中,根据数据分布,您正在读取表的1/3,600k表的200k行。在这里进行扫描,可能使用散列连接,效率会更高 查询本身没有提供太多的内容来过滤上的[aarhus cluster onesearch staging].[dbo].[LandingPages].
我认为这与我上面复制的CTE得出的结果相同。首先,您的统计数据看起来非常不一致。估计3700行,实际219000行。这表明,至少统计信息更新可能会改变优化器所做的选择。由于这些行估计,优化器正在选择一个seek和一个嵌套循环操作,其中,根据数据分布,您正在读取表的1/3,600k表的200k行。在这里进行扫描,可能使用散列连接,效率会更高
查询本身没有提供太多的内容来过滤上的[aarhus cluster onesearch staging].[dbo].[LandingPages].[PK_LandingPages]表。因此,它将抽取200000行,以便将它们过滤到30行。如果你能找到一种方法在那里进行额外的过滤,你应该会看到性能的提高。如果你看到我的编辑,我找不到与你之前的问题有什么不同。在我添加所有信息之前,它已经关闭了。我希望所有的新信息都足够了,如果没有,你能告诉我还包括什么吗?我理解。有道理。
select l.Url, min(f.urlfiltertype) as Filter
from landingpages l
join landingpageurlfilters lpf on lpf.landingpageid = l.Url
join urlfilters f on lpf.urlfilterid = f.id
where f.groupid = 3062
group by l.Url
select lpf.landingpageid AS [Url], min(f.urlfiltertype) as Filter
from landingpageurlfilters lpf
join urlfilters f on lpf.urlfilterid = f.id
where f.groupid = 3062
group by lpf.landingpageid