首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在更改添加列时将直方图约束添加为是

问如何在更改添加列时将直方图约束添加为是
EN

Stack Overflow用户
提问于 2018-07-26 06:08:13
回答 2查看 325关注 0票数 1

我正在处理Oracle数据库,必须修改表'RETURNS‘,并添加列RENTAL_SALES和

代码语言:javascript
复制
ALTER TABLE
   RETURNS
ADD(
   RENTAL_SALES NUMBER (14,2) NULL,
   INBOUND_SALES NUMBER (14,2) NULL
);

如何将直方图设置为“”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-26 06:27:43

使用method_opt=‘对于大小为1的所有列和大小为254的列,运行gather status using method_opt=’。检查是否启用从User_tab_column_statics where table_name=‘tableName’中选择表名、直方图;

票数 1
EN

Stack Overflow用户

发布于 2018-07-26 16:18:58

为什么需要使用直方图?您是否面对错误的查询平面?

直方图有多种类型,具体取决于分配给该类型的不同值的数量。

频率(顶部)直方图、高平衡直方图和混合直方图。

数据库将通过自动收集统计数据来分配直方图,然后对表进行查询(当对表数据进行查询时,将在SYS.COL_USAGE$上更新表数据),然后再次更新统计数据。

代码语言:javascript
复制
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的列都会收集基列统计信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51528374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档