早上好
我收到了我们开发团队的架构更新请求。他们想在我们的一个表中添加一列,并且某些产品数据库中有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是否会添加一些额外内容?也许我正在忽略某些内容?
感谢帮助。
谢谢