diff --git a/classes/Notice.php b/classes/Notice.php index c58705c4b8..ea69a5beda 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -1690,7 +1690,7 @@ class Notice extends Memcached_DataObject $notice->repeat_of = $this->id; - $notice->orderBy('created'); // NB: asc! + $notice->orderBy('created, id'); // NB: asc! if (!is_null($limit)) { $notice->limit(0, $limit); diff --git a/db/096to097.sql b/db/096to097.sql index c3f1fb4253..5947538da8 100644 --- a/db/096to097.sql +++ b/db/096to097.sql @@ -1,7 +1,10 @@ -- Add indexes for sorting changes in 0.9.7 --- Allows sorting public timeline by timestamp efficiently -alter table notice add index notice_created_id_is_local_idx (created,id,is_local); +-- Allows sorting public timeline and api/statuses/repeats by timestamp efficiently +alter table notice + add index notice_created_id_is_local_idx (created,id,is_local), + drop index notice_repeatof_idx, + add index notice_repeat_of_created_id_idx (repeat_of, created, id); -- Allows sorting tag-filtered public timeline by timestamp efficiently alter table notice_tag add index notice_tag_tag_created_notice_id_idx (tag, created, notice_id); diff --git a/db/statusnet.sql b/db/statusnet.sql index 5898abf463..9624edd6f0 100644 --- a/db/statusnet.sql +++ b/db/statusnet.sql @@ -137,11 +137,15 @@ create table notice ( -- For profile timelines... index notice_profile_id_idx (profile_id,created,id), + -- For api/statuses/repeats... + index notice_repeat_of_created_id_idx (repeat_of, created, id), + -- Are these enough? index notice_conversation_idx (conversation), index notice_created_idx (created), index notice_replyto_idx (reply_to), index notice_repeatof_idx (repeat_of), + FULLTEXT(content) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;