diff options
author | Yorhel <git@yorhel.nl> | 2009-11-15 11:09:34 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-11-15 11:14:06 +0100 |
commit | 06832f907632574ae41bf96e27e028b224078d39 (patch) | |
tree | c7d08887c0f05966fddf15548aeae48ada231680 /util | |
parent | 7f1b892cb46c8f713a3bb7c5ea94de2f7aa42508 (diff) |
SQL: Improved performance of update_vnpopularity()
The previous statement was optimized for PostgreSQL 8.3 and took only about a
second, but after the update to 8.4 it took about 10 times longer due to a
different execution plan being generated. This slightly reworded statement
generates a more efficient plan on 8.4.
Diffstat (limited to 'util')
-rw-r--r-- | util/dump.sql | 2 | ||||
-rw-r--r-- | util/updates/update_2.9.sql | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/util/dump.sql b/util/dump.sql index a5451395..e0af79e8 100644 --- a/util/dump.sql +++ b/util/dump.sql @@ -481,7 +481,7 @@ BEGIN SELECT v.uid, v.vid, sqrt(count(*))::real FROM votes v JOIN votes v2 ON v.uid = v2.uid AND v2.vote < v.vote - WHERE v.uid NOT IN(SELECT id FROM users WHERE ign_votes) + JOIN users u ON u.id = v.uid AND NOT ign_votes GROUP BY v.vid, v.uid; CREATE OR REPLACE TEMP VIEW tmp_pop2 (vid, win) AS SELECT vid, sum(rank) FROM tmp_pop1 GROUP BY vid; diff --git a/util/updates/update_2.9.sql b/util/updates/update_2.9.sql index d11a5eed..3b3e147d 100644 --- a/util/updates/update_2.9.sql +++ b/util/updates/update_2.9.sql @@ -64,7 +64,7 @@ BEGIN SELECT v.uid, v.vid, sqrt(count(*))::real FROM votes v JOIN votes v2 ON v.uid = v2.uid AND v2.vote < v.vote - WHERE v.uid NOT IN(SELECT id FROM users WHERE ign_votes) + JOIN users u ON u.id = v.uid AND NOT ign_votes GROUP BY v.vid, v.uid; CREATE OR REPLACE TEMP VIEW tmp_pop2 (vid, win) AS SELECT vid, sum(rank) FROM tmp_pop1 GROUP BY vid; |