Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 优化H2查询:从x=y的表中选择计数(*)_Sql_H2 - Fatal编程技术网

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
这应该是快速的,因为第一部分是直接查找,另外两个查询应该是快速的,因为大多数结果通常是“成功”


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

有效,谢谢!我仍然不太明白为什么相等运算符不起作用,但大于/小于等于…相等运算符起作用并使用和索引,但正如您所说的,只有少数条目不成功,因此在这种情况下,计算这些条目的速度更快。