我注意到在Oracle中,
查询
SELECT COUNT(*) FROM soMetable;
对于大表来说非常慢。看起来像数据库它实际上通过每一行,并一次增加一个计数器。我会认为会有一个计数器在表中有多少行表。
因此,如果我想检查Oracle中的表中的行数,最快的方法是什么?
想想吧:
数据库真的要去每一行去做。在多
用户环境中,我的COUNT(*)可能与您的COUNT(*)不同。对于每个会话都有一个不同的计数器是不切实际的,所以你从字面上计数行。大多数时候,你会有一个WHERE子句或一个JOIN在你的
查询,所以你的假设计数器将具有很小的实用价值。
然而,有些方法可以加快速度:如果您在NOT NULL列上有INDEX,Oracle将计算索引的行而不是表。在正确的关系模型中,所有表都有一个主键,所以COUNT(*)将使用主键的索引。
位图索引具有NULL行的条目,因此如果有一个可用,COUNT(*)将使用位图索引。
原文链接:https://www.f2er.com/oracle/207493.html