加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在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(*)将使用位图索引。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读