添加具有默认值的非空列

时间:2019-02-04 23:35:51

标签: sql oracle oracle11g

早上好

我收到了我们开发团队的架构更新请求。他们想在我们的一个表中添加一列,并且某些产品数据库中有7个以上的账单记录。

我的ora版本是11.2.0.4,兼容性参数也设置为11.2。

他们要添加的列如下:

更改表事件添加(插入的时间戳默认sys_extract_utc(systeimstamp)不为null);

我在较小的数据库上对此进行了测试,并且运行良好。然后,我尝试使用更大的表(20亿条记录),并且该表一直在运行。

会话显示了很多物理读取

我的理解是,对于11.2.0.4,这种加法直接在数据字典上完成。 (如果我错了,请纠正我)。

无论如何,出于测试目的,我修改了上面的语句,而不是调用函数(sys_extract_utc),而是将时间戳记值从double中选择出来,因此查询变为:

更改表事件添加(插入的时间戳默认为'04 -FEB-19 11:06.11.101700 PM'不为null);

这在MILLISECONDS中运行。

现在我想弄清楚为什么,这一个比另一个快吗?是因为函数调用吗?

当我们在列添加过程中指定这样的动态值时,oracle是否会添加一些额外内容?也许我正在忽略某些内容?

感谢帮助。

谢谢

0 个答案:

没有答案