在Oracle中更快的选择SELECT COUNT(*)FROM sometable
发布时间:2020-12-12 16:27:45 所属栏目:百科 来源:网络整理
导读:我注意到在Oracle中,查询 SELECT COUNT(*) FROM sometable; 对于大表来说非常慢。看起来像数据库它实际上通过每一行,并一次增加一个计数器。我会认为会有一个计数器在表中有多少行表。 因此,如果我想检查Oracle中的表中的行数,最快的方法是什么? 想想吧
我注意到在Oracle中,查询
SELECT COUNT(*) FROM sometable; 对于大表来说非常慢。看起来像数据库它实际上通过每一行,并一次增加一个计数器。我会认为会有一个计数器在表中有多少行表。 因此,如果我想检查Oracle中的表中的行数,最快的方法是什么? 想想吧:数据库真的要去每一行去做。在多用户环境中,我的COUNT(*)可能与您的COUNT(*)不同。对于每个会话都有一个不同的计数器是不切实际的,所以你从字面上计数行。大多数时候,你会有一个WHERE子句或一个JOIN在你的查询,所以你的假设计数器将具有很小的实用价值。然而,有些方法可以加快速度:如果您在NOT NULL列上有INDEX,Oracle将计算索引的行而不是表。在正确的关系模型中,所有表都有一个主键,所以COUNT(*)将使用主键的索引。 位图索引具有NULL行的条目,因此如果有一个可用,COUNT(*)将使用位图索引。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |