gpt4 book ai didi

oracle - 我应该使用 Oracle 的 sys_guid() 来生成 guids 吗?

转载 作者:行者123 更新时间:2023-12-04 22:14:50 24 4
gpt4 key购买 nike

我有一些继承的代码,每次创建实体时都会调用 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;

您还可以将其用作主键的默认值:
drop table my_tab;
create table my_tab
(
val1 raw(16) default sys_guid(),
val2 varchar2(100),
primary key(val1)
);

这里不需要设置 before insert 触发器来使用序列(或者在大多数情况下甚至关心 val1 或其在代码中的填充方式)。

也对序列进行更多维护。更不用说在系统之间移动数据时的可移植性问题了。

但是,序列对人类更友好(到目前为止,查看和使用数字比原始值的 32 十六进制版本更好)。序列可能还有其他好处,我没有做过任何广泛的比较,您可能希望先运行一些性能测试。

关于oracle - 我应该使用 Oracle 的 sys_guid() 来生成 guids 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11864575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com