gpt4 book ai didi

oracle - 在 oracle 中只选择新行

转载 作者:行者123 更新时间:2023-12-02 09:42:02 25 4
gpt4 key购买 nike

我有一个以“varchar2”为主键的表。
每天大约有 1,000,000 笔交易。

我的应用程序每 5 分钟唤醒一次,通过仅查询新记录来生成文本文件。
它将记住最后一点并仅处理新记录。

  1. 您知道如何以良好的性能进行查询吗?
    如有必要,我可以添加新列。

  2. 您认为这个过程应该做什么?

    • plsql?
    • java?

最佳答案

这里的每个人都非常非常亲密。但是:

如果表处于任何类型的连续 DML 负载下,Scott Bailey 关于使用位图索引的观点是错误的。这正是使用位图索引的错误时机。

其他人关于 PROCESSED CHAR(1) check in ('Y','N') 的回答列是正确的,但缺少如何索引它;您应该使用基于函数的索引,如下所示:

CREATE INDEX MY_UNPROCESSED_ROWS_IDX ON MY_TABLE
(CASE WHEN PROCESSED_FLAG = 'N' THEN 'N' ELSE NULL END);

然后您可以使用相同的表达式查询它:

SELECT * FROM MY_TABLE
WHERE (CASE WHEN PROCESSED_FLAG = 'N' THEN 'N' ELSE NULL END) = 'N';

使用基于函数的索引的原因是 Oracle 不会为被索引的完全 NULL 值写入索引条目,因此上面的基于函数的索引将仅包含 PROCESSED_FLAG = 'N' 的行。 。当您将行更新为 PROCESSED_FLAG = 'Y' 时,它们就会从索引中“掉出”。

关于oracle - 在 oracle 中只选择新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2501251/

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