我试图从一张包含大约4000万条记录的表中获取记录数。我的查询如下:
Select count(*) from Employee
where code = '000111' and status = 'A' and rank = 'B'
大约有2-3百万条记录满足条件。状态只有2个值(A和C),秩也只有两个值(A和B)
已为列'代码','状态'和'排名'添加了索引,并且所有索引都是VARCHAR。
尽管如此,上述查询花费了大量时间。
有没有办法快速检索计数?
请注意,我只想要记录数。
编辑:列详细信息
EMPLOYEE
CODE. NOT NULL VARCHAR2(6)
STATUS NOT NULL VARCHAR2(1)
RANK NOT NULL VARCHAR2(1)
索引:
CODE_IDX - Normal Index (For Code)
STATUS_IDX - BITMAP Index (For Status)
TARIFF_IDX - Normal Index (For Tariff)
答案 0 :(得分:1)
如果表不断更新并且您需要不断获取计数,我建议您创建一个键/值表(如果您还没有),将计数存储为数据库中的条目而不是而不是每次都得到计数。也就是说,如果你需要你的查询更快......那肯定会加快它的速度。将密钥保留在桌面上的主键上,您不必担心索引。通过向值中减去或添加1来插入或删除新条目时更新键/值对。然后通过以cron或其他方式进行计数,定期确保您的价值确定。
答案 1 :(得分:0)
你试过了吗?
Select count(1) from Employee where code = '000111' and status = 'A' and rank = 'B'