ORDER BY句とLIMIT句が使われている場合には、
ORDER BY句の列にインデックスを定義すれば、調べられるレコードを減らす事ができます。
例えば、
SELECT t.owner_id, t.parent_id, t.timeline_type, t.update_date FROM eip_t_timeline t WHERE t.parent_id = 0 AND (t.owner_id IN (0,13,7,16,15,19,18,4,17,21,22,23,24,25,35,38,41,44,51,65,66,67,69,74,82,88,89,90,91,92)) ORDER BY t.update_date DESC LIMIT 20 OFFSET 0;
のようなクエリではupdate_dateを順に調べていけば、調べるレコードが少なくて済みそうです。
update_dateのインデックスを定義するコードは次の通りです。
CREATE INDEX eip_t_timeline_update_date_index ON eip_t_timeline(update_date);
オプティマイザが上手く働かない場合には、FROM句の後に、USE句やFORCE句で使うインデックスを指定します。
SELECT t.owner_id, t.parent_id, t.timeline_type, t.update_date FROM eip_t_timeline t FORCE INDEX(eip_t_timeline_update_date_index) WHERE t.parent_id = 0 AND (t.owner_id IN (0,13,7,16,15,19,18,4,17,21,22,23,24,25,35,38,41,44,51,65,66,67,69,74,82,88,89,90,91,92)) ORDER BY t.update_date DESC LIMIT 20 OFFSET 0;