gpt4 book ai didi

sql - Oracle 上 SELECT * 和 SELECT COUNT(*) 之间的不同结果大小

转载 作者:行者123 更新时间:2023-12-03 17:39:35 25 4
gpt4 key购买 nike

我在 oracle 数据库上有一个奇怪的行为。我们插入了大约 310 万条记录。到目前为止一切都很好。

插入完成后不久(大约 1 到 10 分钟),我执行了两条语句。

  • 从表中选择 COUNT(*)
  • 从表中选择 *

  • 第一条语句的结果很好,它给了我插入的确切行数。

    第二个语句的结果现在是问题所在。根据时间的不同,返回的行数例如比第一个语句的结果低 500K 左右。两个结果的差异随着时间的推移而减小。

    所以我必须等待 15 到 30 分钟,然后两个语句才能返回相同的行数。

    我已经与 oracle dba 讨论过这个问题,但他不知道这是怎么发生的。

    有什么想法、问题或建议吗?

    更新

    当我只选择一个索引列时,我得到了正确的行数。
    当我选择一个非索引列时,我再次得到错误的行数。

    最佳答案

    这对我来说听起来不像是一个错误,如果我理解正确的话,Oracle 只需要时间来获取整个表。毕竟三百万不是小数目。

    与计数相反,计数带来 1 条记录和总行数。

    如果经过一些等待,输出的记录数等于 count 查询返回的数,那么一切都很好。

    关于sql - Oracle 上 SELECT * 和 SELECT COUNT(*) 之间的不同结果大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39448429/

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