我正在使用Oracle数据库,必须更改表' RETURNS '并添加列 RENTAL_SALES 和 INBOUND_SALES 。
ALTER TABLE
RETURNS
ADD(
RENTAL_SALES NUMBER (14,2) NULL,
INBOUND_SALES NUMBER (14,2) NULL
);
如何将 直方图 设置为“ 是 ”
答案 0 :(得分:1)
使用method_opt ='FOR ALL COLUMNS SIZE 1 FOR FOR COLUMNS SIZE 254 {要在其上启用直方图的列名}''运行收集状态。 检查是否启用 选择column_name,直方图 User_tab_column_statics其中table_name ='tableName';
答案 1 :(得分:1)
为什么需要使用直方图?您是否遇到错误的查询平面?
直方图的类型取决于类型分配的不同值的数量。
频率(顶部)直方图,高平衡直方图和混合直方图。
数据库将通过自动收集统计信息来分配直方图,然后查询表(查询表数据时将在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的列均会收集基本列统计信息。