物化视图未按预期工作?

时间:2017-03-07 15:20:08

标签: postgresql

我有一个简单的查询:

select * from tags where tags.taggable_type = 'Skill';

大致需要:

Seq Scan on tags  (cost=0.00..378.81 rows=11775 width=77) (actual time=0.019..7.092 rows=11775 loops=1)
  Filter: ((taggable_type)::text = 'Skill'::text)
  Rows Removed by Filter: 4610
  Planning time: 0.098 ms
  Execution time: 8.536 ms
(5 rows)

检索这些记录。我创建了一个物化视图,希望检索的时间会急剧减少,但实际上我在运行mat查询时得到了这个:

explain analyze select * from skill_matview;

Seq Scan on skill_matview  (cost=0.00..239.75 rows=11775 width=76) (actual time=0.078..5.481 rows=11775 loops=1)
   Planning time: 1.562 ms
   Execution time: 6.900 ms
(3 rows)

我错过了什么,我一直在四处看看,一切都在吹嘘一些非常好的查询减少时间,但我在这里没有看到。

编辑:

CREATE MATERIALIZED VIEW skill_matview AS select * from tags where tags.taggable_type = 'Skill';

1 个答案:

答案 0 :(得分:2)

在您的案例中,物化视图没有多大好处。

原始查询必须扫描整个16385行,而WHERE条件只删除其中的4610行。

因此物化视图大约是表格的四分之三,对它的连续扫描将花费大约四分之三的时间,这大致与您观察到的一致。

此外,9毫秒并不是那么糟糕,是吗?