Sql 优化H2查询:从x=y的表中选择计数(*)
我有一个如下的查询:Sql 优化H2查询:从x=y的表中选择计数(*),sql,h2,Sql,H2,我有一个如下的查询: EXPLAIN ANALYZE select count(*) from Table t where t.outcome='SUCCESS' “结果”列有一个索引 H2告诉我这是在使用索引,但我仍然得到了接近完整表扫描的结果,因为大多数行都设置了“SUCCESS”,并且基数非常低 有没有办法加快速度? 顺便说一句,没有“WHERE”部分的查询速度非常快,正如文档所说。应该使用3个子查询: select (select count(*) from table) -
EXPLAIN ANALYZE
select count(*) from Table t
where t.outcome='SUCCESS'
“结果”列有一个索引
H2告诉我这是在使用索引,但我仍然得到了接近完整表扫描的结果,因为大多数行都设置了“SUCCESS”,并且基数非常低
有没有办法加快速度?
顺便说一句,没有“WHERE”部分的查询速度非常快,正如文档所说。应该使用3个子查询:
select
(select count(*) from table) -
(select count(*) from table where outcome<'SUCCESS') -
(select count(*) from table where outcome>'SUCCESS')
as count
这应该是快速的,因为第一部分是直接查找,另外两个查询应该是快速的,因为大多数结果通常是“成功”
如果没有,您是否可以获取查询计划并将其添加到问题解释分析选择…?有效,谢谢!我仍然不太明白为什么相等运算符不起作用,但大于/小于等于…相等运算符起作用并使用和索引,但正如您所说的,只有少数条目不成功,因此在这种情况下,计算这些条目的速度更快。