summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2009-11-10 08:47:54 -0800
committerBrion Vibber <brion@pobox.com>2009-11-10 08:47:54 -0800
commit737fe763471bcb6ebd95c318363308a33e28e889 (patch)
treeb9094b0adda4e666fa9480f547a80b0a54e027b5
parent9d0687b0559095f270a55af3467c53ad29bfd4c7 (diff)
Performance fix for subscription/subscriber lists based on feedback from ops.
Extended subscription table indexes for subscriber and subscribed to include the created field, which is used to sort for display. This lets us skip a filesort and do the join much more efficiently. Alter table from 08to09.sql needs to be run manually (though no ill effects if you forget other than not getting the perf improvement).
-rw-r--r--db/08to09.sql6
-rw-r--r--db/08to09_pg.sql6
-rw-r--r--db/statusnet.sql4
-rw-r--r--db/statusnet_pg.sql4
4 files changed, 16 insertions, 4 deletions
diff --git a/db/08to09.sql b/db/08to09.sql
index e6842225b..1d37a759d 100644
--- a/db/08to09.sql
+++ b/db/08to09.sql
@@ -45,3 +45,9 @@ create table login_token (
alter table fave
drop index fave_user_id_idx,
add index fave_user_id_idx (user_id,modified);
+
+alter table subscription
+ drop index subscription_subscriber_idx,
+ add index subscription_subscriber_idx (subscriber,created),
+ drop index subscription_subscribed_idx,
+ add index subscription_subscribed_idx (subscribed,created);
diff --git a/db/08to09_pg.sql b/db/08to09_pg.sql
index 956c4dee5..004c77b36 100644
--- a/db/08to09_pg.sql
+++ b/db/08to09_pg.sql
@@ -51,3 +51,9 @@ create table login_token (
alter table fave
drop index fave_user_id_idx,
add index fave_user_id_idx using btree(user_id,modified);
+
+alter table subscription
+ drop index subscription_subscriber_idx,
+ add index subscription_subscriber_idx using btree(subscriber,created),
+ drop index subscription_subscribed_idx,
+ add index subscription_subscribed_idx using btree(subscribed,created);
diff --git a/db/statusnet.sql b/db/statusnet.sql
index 510c8866e..2983c67cf 100644
--- a/db/statusnet.sql
+++ b/db/statusnet.sql
@@ -107,8 +107,8 @@ create table subscription (
modified timestamp comment 'date this record was modified',
constraint primary key (subscriber, subscribed),
- index subscription_subscriber_idx (subscriber),
- index subscription_subscribed_idx (subscribed),
+ index subscription_subscriber_idx (subscriber, created),
+ index subscription_subscribed_idx (subscribed, created),
index subscription_token_idx (token)
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
diff --git a/db/statusnet_pg.sql b/db/statusnet_pg.sql
index 710883e57..392a6a5f3 100644
--- a/db/statusnet_pg.sql
+++ b/db/statusnet_pg.sql
@@ -115,8 +115,8 @@ create table subscription (
primary key (subscriber, subscribed)
);
-create index subscription_subscriber_idx on subscription using btree(subscriber);
-create index subscription_subscribed_idx on subscription using btree(subscribed);
+create index subscription_subscriber_idx on subscription using btree(subscriber,created);
+create index subscription_subscribed_idx on subscription using btree(subscribed,created);
create sequence notice_seq;
create table notice (