【发布时间】:2016-11-02 04:39:03
【问题描述】:
我试图从包含数百万条目的表中获取计数。我的查询有点像这样:
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')
【问题讨论】:
-
您的年龄字段是文本字段吗?只是想知道
-
对您的查询运行解释计划(并发布输出?)。
age列是什么数据类型?Employee表上存在哪些索引? -
能否在 MySQL 中提供表定义?
-
是的,它是一个文本字段。抱歉,我刚刚粘贴了一个示例查询。我马上更新
-
@Chillax 显而易见的问题是为什么将数字存储为文本字段?