我需要截断并重新加载表。
我了解到truncate需要将统计信息收集在表上作为其后续过程,以便数据库获取实际统计信息,否则truncate语句不会清除以前的统计信息。
完成这两项操作(在空表上截断和收集统计信息)之后,运行插入...,但是在我的表的all_tab_statistics表中看不到新的统计信息。 Sample_size仍为0。
那是为什么?插入后,Oracle不应该执行自动统计信息收集吗?
我是否需要重新运行统计信息,或者考虑到此表的性能是否还可以(请注意,它将每次都被截断并重新加载)?
答案 0 :(得分:0)
请考虑以下方法。它具有表始终存在的优点。
RENAME
表以交换新表。此步骤足够快,因此您不会注意到。答案 1 :(得分:0)
我知道我已经很久没有在上面发布我的问题了。但最近,我们再次面临类似的情况,这一次,以下步骤致力于在具有 8 亿行的表上获得更好的性能。