cmd*_*tos 4 oracle guid primary-key
我有一些继承的代码,SELECT SYS_GUID() FROM DUAL每次创建实体时调用.这意味着对于每次插入,有两次调用Oracle,一次调用,另一次调用Guid数据.
我认为可能有一个很好的理由,例如 - Oracle的Guids可以通过顺序进行优化以进行高容量插入,因此它们可能试图避免过多的索引树重新平衡.
是否有理由使用SYS_GUID而不是Guid在客户端上构建自己的?
如果您已经提供给自己,为什么要自己动手.此外,您不需要先抓住然后插入,您只需插入:
create table my_tab
(
val1 raw(16),
val2 varchar2(100)
);
insert into my_tab(val1, val2) values (sys_guid(), 'Some data');
commit;
Run Code Online (Sandbox Code Playgroud)
您还可以将其用作主键的默认值:
drop table my_tab;
create table my_tab
(
val1 raw(16) default sys_guid(),
val2 varchar2(100),
primary key(val1)
);
Run Code Online (Sandbox Code Playgroud)
这里不需要设置一个前插入触发器来使用一个序列(或者在大多数情况下甚至关心val1或它在代码中的填充方式).
序列的维护也更多.更不用说在系统之间移动数据时的可移植性问题.
但是,序列是更人性化的imo(到目前为止,查看和使用数字优于原始值的32十六进制版本).序列可能还有其他好处,我没有做过任何广泛的比较,你可能希望先进行一些性能测试.
| 归档时间: |
|
| 查看次数: |
17514 次 |
| 最近记录: |