显示顺序扫描结果而不是索引

问题描述

当我分析我的 Postgres sql 查询时,它给了我一个问题,它总是给出顺序扫描结果而不是索引,我们已经增加了 Postgres 数据库的内存并清理它,但我们在这里没有得到任何积极的结果是我们执行的查询和我们得到的结果 查询

EXPLAIN ANALYZE SELECT *
FROM "Geography".regions where "type" ='City'
Result:
Seq Scan on regions  (cost=0.00..25934.28 rows=84979 width=1099) (actual time=0.010..38.759 rows=85245 loops=1)
  Filter: ((type)::text = 'City'::text)
  Rows Removed by Filter: 8217
Planning Time: 0.103 ms
Execution Time: 42.257 ms

解决方法

好吧,执行计划显示只有 8% 的行被您的条件过滤掉,这意味着该表中 92% 的行将被返回,因此当大多数行应该被返回时,Seq Scan 会快得多回来 , 这就是优化器从不费心扫描索引的原因