我正在开发一个访问 Sybase ASE 15.0.2 的应用程序,其中当前代码访问远程数据库 (CIS) 以使用代理表定义插入一行(目标表是 DOL-DRL 表-定义了 PK 行作为身份,并且一直在增长)。当前代码执行选择以检查该行是否已存在以避免插入重复数据。
由于远程表在表上也有一个 PK 定义,我知道在提交该行之前将再次完成 PK 验证。我计划删除选择检查,因为它通过 PK 验证再次有效地完成,但我担心如果在接收具有许多重复的文件时,当尝试提交数据时,表可能会遭受一些不必要的争用。
我不清楚 Sybase ASE 是否尝试保留最后一行并在检查重复项之前写入数据。此外,如果表非常大,我还担心查找整个索引以查找重复项所花费的时间。
我在任何地方都找到了一些 SQL 文档,但在以下链接 http://dcx.sybase.com/1200/en/dbusage/insert-how-transact.html中没有找到 ASE
我能找到的最好的是以下解释
https://groups.google.com/forum/?fromgroups#!topic/comp.databases.sybase/tHnOqptD7X8
但是它并没有详细说明该行是如何锁定的(以及是否有任何类型的优化可以提前或在 PK 检查的同时编写),以及如果我积极插入是否会浪费完整的 PK 外观PK 正大于提交的最后一行的行
谢谢
亚历克斯