Update sorting for conversation views: adds notice_conversation_created_id_idx index on notice, replacing more limited notice_conversation_idx

This commit is contained in:
Brion Vibber 2010-12-17 16:08:37 -08:00
parent 71151b3bc0
commit fb65d5901d
3 changed files with 13 additions and 14 deletions

View File

@ -704,19 +704,14 @@ class Notice extends Memcached_DataObject
$notice->conversation = $id; $notice->conversation = $id;
$notice->orderBy('id DESC'); $notice->orderBy('created DESC, id DESC');
if (!is_null($offset)) { if (!is_null($offset)) {
$notice->limit($offset, $limit); $notice->limit($offset, $limit);
} }
if ($since_id != 0) { Notice::addWhereSinceId($notice, $since_id);
$notice->whereAdd('id > ' . $since_id); Notice::addWhereMaxId($notice, $max_id);
}
if ($max_id != 0) {
$notice->whereAdd('id <= ' . $max_id);
}
$ids = array(); $ids = array();

View File

@ -1,10 +1,14 @@
-- Add indexes for sorting changes in 0.9.7 -- Add indexes for sorting changes in 0.9.7
-- Allows sorting public timeline and api/statuses/repeats by timestamp efficiently -- Allows sorting public timeline, api/statuses/repeats, and conversations by timestamp efficiently
alter table notice alter table notice
add index notice_created_id_is_local_idx (created,id,is_local), add index notice_created_id_is_local_idx (created,id,is_local),
add index notice_repeat_of_created_id_idx (repeat_of, created, id),
drop index notice_repeatof_idx, drop index notice_repeatof_idx,
add index notice_repeat_of_created_id_idx (repeat_of, created, id);
add index notice_conversation_created_id_idx (conversation, created, id),
drop index notice_conversation_idx;
-- Allows sorting tag-filtered public timeline by timestamp efficiently -- 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); alter table notice_tag add index notice_tag_tag_created_notice_id_idx (tag, created, notice_id);

View File

@ -140,11 +140,11 @@ create table notice (
-- For api/statuses/repeats... -- For api/statuses/repeats...
index notice_repeat_of_created_id_idx (repeat_of, created, id), index notice_repeat_of_created_id_idx (repeat_of, created, id),
-- Are these enough? -- For conversation views
index notice_conversation_idx (conversation), index notice_conversation_created_id_idx (conversation, created, id),
index notice_created_idx (created),
-- Are these needed/used?
index notice_replyto_idx (reply_to), index notice_replyto_idx (reply_to),
index notice_repeatof_idx (repeat_of),
FULLTEXT(content) FULLTEXT(content)
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci; ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;