我正在处理Oracle数据库,必须修改表'RETURNS‘,并添加列RENTAL_SALES和
ALTER TABLE
RETURNS
ADD(
RENTAL_SALES NUMBER (14,2) NULL,
INBOUND_SALES NUMBER (14,2) NULL
);如何将直方图设置为“”
发布于 2018-07-26 06:27:43
使用method_opt=‘对于大小为1的所有列和大小为254的列,运行gather status using method_opt=’。检查是否启用从User_tab_column_statics where table_name=‘tableName’中选择表名、直方图;
发布于 2018-07-26 16:18:58
为什么需要使用直方图?您是否面对错误的查询平面?
直方图有多种类型,具体取决于分配给该类型的不同值的数量。
频率(顶部)直方图、高平衡直方图和混合直方图。
数据库将通过自动收集统计数据来分配直方图,然后对表进行查询(当对表数据进行查询时,将在SYS.COL_USAGE$上更新表数据),然后再次更新统计数据。
BEGIN
dbms_stats.Gather_table_stats('SCHEMA_NAME', 'TABLE',
method_opt => 'FOR ALL COLUMNS SIZE AUTO');
END;
/
select * from TABLE where ....
BEGIN
dbms_stats.Gather_table_stats('SCHEMA_NAME', 'TABLE',
method_opt => 'FOR ALL COLUMNS SIZE AUTO');
END;
/注意:(如果您之前已经创建了索引,或者已经更新了统计信息,并且您正在查询表,则再次更新统计信息将创建直方图)
另一个注意:这个method_opt='FOR ALL COLUMNS SIZE 1 FOR COLUMNS SIZE 254 column name会将列分配到高平衡,也许这个列需要频率类型,所以如果你不知道NDV和有多少数据,最好让数据库选择,否则你可能会有糟糕的查询计划,其余的列将不会创建直方图,因为所有大小为1的列都会收集基列统计信息。
https://stackoverflow.com/questions/51528374
复制相似问题