优化H2查询:SELECT COUNT(*)FROM表WHERE x = y

时间:2013-04-08 15:52:21

标签: sql h2

我有一个如下所示的查询:

EXPLAIN ANALYZE 
select count(*) from Table t 
where t.outcome='SUCCESS'

'结果'列有一个索引。

H2告诉我它使用索引,但我仍然接近全表扫描,因为大多数行设置为'SUCCESS',并且基数非常低。

有没有办法加快速度? 顺便说一句,没有'WHERE'部分的查询非常快,就像文档所说的那样。

1 个答案:

答案 0 :(得分:1)

使用3个子查询应该有什么用处:

select
  (select count(*) from table) - 
  (select count(*) from table where outcome<'SUCCESS') -
  (select count(*) from table where outcome>'SUCCESS')
as count

这应该很快,因为第一部分是直接查找,而另外两个查询应该很快(因为大多数outcome通常是'SUCCESS')。

如果没有,您是否可以获得查询计划并将其添加到问题中(解释分析选择...)?