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).
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);
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);
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;
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 (