我对优化这种类型的负载有几个问题。
构建一个新的数据表以加载到分区表中,然后在这个新表上构建索引。
您应该使用 COMPUTE STATISTICS 选项构建索引还是使用 DBMS_Stats 的 Cascade 选项?
您应该在交换之前的表上还是在交换之后的分区上收集统计信息?
如果你在交换之后做,并且你在参数列表中指定分区名称,粒度参数有什么相互作用?例如,如果我指定一个分区名称,然后将粒度设置为“全局和分区”,那是否会全局?它只做一个分区吗?
我对优化这种类型的负载有几个问题。
构建一个新的数据表以加载到分区表中,然后在这个新表上构建索引。
您应该使用 COMPUTE STATISTICS 选项构建索引还是使用 DBMS_Stats 的 Cascade 选项?
您应该在交换之前的表上还是在交换之后的分区上收集统计信息?
如果你在交换之后做,并且你在参数列表中指定分区名称,粒度参数有什么相互作用?例如,如果我指定一个分区名称,然后将粒度设置为“全局和分区”,那是否会全局?它只做一个分区吗?
您应该使用 COMPUTE STATISTICS 选项构建索引还是使用 DBMS_Stats 的 Cascade 选项?
如果这是一个数据仓库,那么首先考虑根本不收集统计数据,并使用动态抽样。其次,如果您确实收集了统计信息,那么一定要对索引使用计算统计信息。
您应该在交换之前的表上还是在交换之后的分区上收集统计信息?
在交换之前收集新数据表的统计信息以获取有关新数据的分区统计信息 -- 之后收集分区表的统计信息以收集表统计信息
如果你在交换之后做,并且你在参数列表中指定分区名称,粒度参数有什么相互作用?例如,如果我指定一个分区名称,然后将粒度设置为“全局和分区”,那是否会全局?它只做一个分区吗?
往上看。
说真的,不要给统计和动态抽样机会。
DBMS_STATS
被认为是计算此版本的统计数据的正确方法。使用 构建索引COMPUTE STATISTICS
是可行的,但通常您希望一次计算所有统计数据并拍摄快照。
您想在交换后收集统计数据。这样,优化器将对使用该分区的数据执行查询做出最佳猜测。
为什么要两个都放?