Le mer. 11 déc. 2024 à 15:00, jian he <jian.universal...@gmail.com> a écrit :
> do we also need to update doc/src/sgml/rules.sgml? > > https://www.postgresql.org/docs/current/rules-materializedviews.html > Yes, you're right. Here is a fix. (Not a patch with a commit message as I don't know if David will want to commit everything (the CI issue, this, and probably more) in one patch.) -- Guillaume.
diff --git a/doc/src/sgml/rules.sgml b/doc/src/sgml/rules.sgml index 7a928bd7b9..6cebed5c37 100644 --- a/doc/src/sgml/rules.sgml +++ b/doc/src/sgml/rules.sgml @@ -1042,12 +1042,16 @@ SELECT count(*) FROM words WHERE word = 'caterpiler'; If the materialized view is used instead, the query is much faster: <programlisting> - Aggregate (cost=4.44..4.45 rows=1 width=0) (actual time=0.042..0.042 rows=1 loops=1) - -> Index Only Scan using wrd_word on wrd (cost=0.42..4.44 rows=1 width=0) (actual time=0.039..0.039 rows=0 loops=1) + Aggregate (cost=4.44..4.45 rows=1 width=8) (actual time=0.138..0.139 rows=1 loops=1) + Buffers: shared read=3 + -> Index Only Scan using wrd_word on wrd (cost=0.42..4.44 rows=1 width=0) (actual time=0.132..0.133 rows=0 loops=1) Index Cond: (word = 'caterpiler'::text) Heap Fetches: 0 - Planning time: 0.164 ms - Execution time: 0.117 ms + Buffers: shared read=3 + Planning: + Buffers: shared hit=5 + Planning Time: 0.143 ms + Execution Time: 0.200 ms </programlisting> Either way, the word is spelled wrong, so let's look for what we might @@ -1087,11 +1091,15 @@ SELECT word FROM words ORDER BY word <-> 'caterpiler' LIMIT 10; Using the materialized view: <programlisting> - Limit (cost=0.29..1.06 rows=10 width=10) (actual time=187.222..188.257 rows=10 loops=1) - -> Index Scan using wrd_trgm on wrd (cost=0.29..37020.87 rows=479829 width=10) (actual time=187.219..188.252 rows=10 loops=1) + Limit (cost=0.29..1.06 rows=10 width=14) (actual time=135.027..135.475 rows=10 loops=1) + Buffers: shared hit=4465 + -> Index Scan using wrd_trgm on wrd (cost=0.29..37224.81 rows=479826 width=14) (actual time=135.023..135.470 rows=10 loops=1) Order By: (word <-> 'caterpiler'::text) - Planning time: 0.196 ms - Execution time: 198.640 ms + Buffers: shared hit=4465 + Planning: + Buffers: shared hit=80 + Planning Time: 0.767 ms + Execution Time: 140.836 ms </programlisting> If you can tolerate periodic update of the remote data to the local