我有一个如下所示的查询:
EXPLAIN ANALYZE
select count(*) from Table t
where t.outcome='SUCCESS'
'结果'列有一个索引。
H2告诉我它使用索引,但我仍然接近全表扫描,因为大多数行设置为'SUCCESS',并且基数非常低。
有没有办法加快速度? 顺便说一句,没有'WHERE'部分的查询非常快,就像文档所说的那样。
答案 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')。
如果没有,您是否可以获得查询计划并将其添加到问题中(解释分析选择...)?