小编Sha*_*ane的帖子

PostgreSQL 可以使用索引来加速计数(不同)查询吗?

考虑以下示例:

CREATE TABLE test (
  id SERIAL,
  some_integer INT
);

INSERT INTO test (some_integer)
SELECT FLOOR(RANDOM()*100000) from generate_series(1,100000) s(i);

CREATE INDEX some_integer_idx ON test (some_integer);

EXPLAIN ANALYZE SELECT COUNT(DISTINCT some_integer) from test;
Run Code Online (Sandbox Code Playgroud)

它返回以下查询计划:

CREATE TABLE test (
  id SERIAL,
  some_integer INT
);

INSERT INTO test (some_integer)
SELECT FLOOR(RANDOM()*100000) from generate_series(1,100000) s(i);

CREATE INDEX some_integer_idx ON test (some_integer);

EXPLAIN ANALYZE SELECT COUNT(DISTINCT some_integer) from test;
Run Code Online (Sandbox Code Playgroud)

我很惊讶它仍然在测试中进行顺序扫描。简单地计算索引中的行数不是更快吗?

postgresql index count distinct

5
推荐指数
1
解决办法
1593
查看次数

标签 统计

count ×1

distinct ×1

index ×1

postgresql ×1