gpt4 book ai didi

oracle - Oracle 中更快的替代 SELECT COUNT(*) FROM sometable

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

我注意到在 Oracle 中,查询

SELECT COUNT(*) FROM sometable;

对于大表来说非常慢。似乎数据库实际上遍历每一行并一次增加一个计数器。我认为表中某处会有一个计数器该表有多少行。

因此,如果我想在 Oracle 中检查表中的行数,最快的方法是什么?

最佳答案

想一想:数据库真的必须去每一行才能做到这一点。 在多用户环境中,我的 COUNT(*)可能与您的 COUNT(*) 不同 .为每个 session 使用不同的计数器是不切实际的,因此您必须从字面上计算行数。大多数情况下,您的查询中都会有 WHERE 子句或 JOIN,因此您假设的计数器几乎没有实际值(value)。

但是,有一些方法可以加快速度:如果您在 NOT NULL 列上有一个 INDEX,则 Oracle 将计算索引的行数而不是表的行数。在适当的关系模型中,所有表都有一个主键,因此 COUNT(*)将使用主键的索引。

位图索引具有 NULL 行的条目,因此 COUNT(*) 将使用位图索引(如果有可用)。

关于oracle - Oracle 中更快的替代 SELECT COUNT(*) FROM sometable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1840538/

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