oracle - 从大表中获取计数

标签 oracle count

我试图从包含数百万条目的表中获取计数。我的查询看起来有点像这样:

Select count(*)
from Users
where status = 'A' and office_id = '000111' and user_type = 'C'

状态可以是 A 或 C,用户类型可以是 C 或 R。 Status、Office_id 和 User_type 是字符串

结果大约有 1000 万行,并且需要很长时间。我只想要总数。

如果有人能告诉我为什么要花这么多时间,以及解决方法(如果有),我将不胜感激。

如果需要更多详细信息,请告诉我。

数据库引擎是Oracle 11g

编辑:我为所有三个列添加了索引。仍然没有任何改善。还尝试了下面的查询,但它总是返回表中的总计数而不检查条件。

SELECT COUNT(office_id_key) 
FROM Users
WHERE EXISTS (SELECT * FROM Users WHERE status = 'A' AND office_id = '000111' AND user_type = 'C')

最佳答案

为什么不简单地在表上的 ageplace 创建索引,这样您的搜索速度将比简单地扫描整个表中的这些值更快。

CREATE INDEX age_index ON Employee(age);
CREATE INDEX place_index ON Employee(place);

这应该会加快该过程。

根据查询更改进行修改

CREATE INDEX status_index ON Users(status);
CREATE INDEX office_id_index ON Users(office_id);
CREATE INDEX user_type_index ON Users(user_type);

关于oracle - 从大表中获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400237/

相关文章:

oracle - 使用 PLSQL 更新 Apex 表格形式

loops - IndexedDb 动态填充现有的 ObjectStore

wpf - 使用 WPF 将 ObservableCollection.Count 绑定(bind)到标签

mysql - 获取两个不同日期列的计数并按日期分组

mysql - Oracle 语法 & 在自反关系中选择最大和最小行

java - LONG RAW 列的 jdbc 类型和 java 类型是什么?

oracle - 通过 JavaScript Oracle APEX 打开模态对话框

sql - 使用 oracle 查询以平滑平均值填充表中缺失数据的间隙

Mysql COUNT VS num rows 性能

mysql - mysql中的跨表查询包括COUNT和LEFT JOINS