gpt4 book ai didi

sql - 查询计划会根据不同的数据大小而改变吗?

转载 作者:行者123 更新时间:2023-11-29 14:21:36 25 4
gpt4 key购买 nike

假设数据分布不变,同一个查询,只是数据集扩大一倍,所用时间会不会也变成一倍?如果数据分布不变,理论上查询计划会改变吗?

最佳答案

是的,即使数据是完全静态的,查询计划仍可能会发生变化,尽管它可能不会。

autovaccum 守护进程将ANALYZE 您的表并生成新的统计信息。这通常只在它们发生变化时发生,但也可能由于其他原因(环绕式预防真空等)发生。

统计信息包括一个随机抽样,用于收集直方图的常见值。由于是随机的,每次的结果可能会有所不同。

为了减少静态数据集计划发生变化的可能性,您可能希望增加表列的统计目标并重新分析。不过不要将它设置得太高,因为查询规划器在做出规划决策时必须读取这些直方图,而较大的直方图意味着规划时间略长。

如果您的表持续增长但分布没有变化,那么您希望计划者在不同的时间点改变计划。一个 1000 行的表几乎肯定最好通过顺序扫描来访问;索引扫描会浪费时间和精力。不过,您当然不希望按顺序扫描一百万行表,除非您要检索大部分行。因此,规划器应该——而且确实——不仅根据数据分布,而且根据总行数调整其决策。

关于sql - 查询计划会根据不同的数据大小而改变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23677984/

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