gpt4 book ai didi

SQL Server - 使用 group by 聚合比没有聚合更快

转载 作者:行者123 更新时间:2023-12-04 16:03:36 26 4
gpt4 key购买 nike

我很难弄清楚为什么特定的执行计划在一种情况下被强制执行,而在另一种情况下却没有。示例:

select min(COLUMN) from TABLE where FK_COLUMN = 1;

对比

select min(COLUMN) from TABLE where FK_COLUMN = 1 group by FK_COLUMN;

第一个生成一个带有索引扫描的执行计划,而第二个则用查找替换扫描。更让我感到困惑的是,这并不是在表格的每一列上都会发生——对于某些列,我不需要分组依据来生成搜索。我还注意到,缓慢的情况只发生在某些外键值上——那些只返回任何行的值,而不是所有不返回行的值都会产生不利的计划。给了什么?

最佳答案

我选择 @Robbie Dee 作为 Oracle CBO 选择的执行计划并不意味着它是最好的方式,但在大多数情况下是最优化的方式。此外,执行计划可以根据列和行的存储方式(基本上是表的大小)进行更改。

考虑一个以 EMP_ID 列为主键的 EMP 表。如果我们在搜索中包括主键列,我们会期望 INDEX RANGE SCAN 但我们可能会在解释计划中获得 FULL TABLE ACCESS。这是 Oracle CBO 选择的数据访问路径,因为它知道表的大小太小,不需要根据主键进行搜索。

嗯...

关于SQL Server - 使用 group by 聚合比没有聚合更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com