gpt4 book ai didi

java - 使用触发器生成 ID 与手动创建 ID

转载 作者:行者123 更新时间:2023-12-01 18:59:06 29 4
gpt4 key购买 nike

如果我们有一个序列来为表生成唯一 ID 字段,这两种方法中哪一种更有效:

  1. 在插入时创建触发器,通过从序列中获取 nextval 来填充 ID 字段。
  2. 在将对象(或元组)插入数据库之前,对应用程序层中的序列调用 nextval。

编辑:应用程序执行批量上传。因此,假设每次应用程序运行时要插入数千或几百万行。 #1 中的触发器会比 #2 中提到的在应用程序内调用序列更有效吗?

最佳答案

由于您要插入大量行,最有效的方法是将 sequence.nextval 包含在 SQL 语句本身中,即

INSERT INTO table_name( table_id, <<other columns>> )
VALUES( sequence_name.nextval, <<bind variables>> )

INSERT INTO table_name( table_id, <<other columns>> )
SELECT sequence_name.nextval, <<other values>>
FROM some_other_table

如果您使用触发器,您将针对插入的每一行强制将上下文从 SQL 引擎转移到 PL/SQL 引擎(然后再返回)。如果单独获取 nextval,则将强制为每一行进行一次到数据库服务器的额外往返。如果您执行一次或两次,这些都不会特别昂贵。不过,如果您执行数百万次,那么毫秒加起来就是实时时间。

关于java - 使用触发器生成 ID 与手动创建 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12928692/

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