少し非正規化して、posts.created_atフィールドをpost_tagsテーブルにコピーする必要があります(私はこれをpost_created_atと呼び、好きなように名前を付けることができます):
CREATE TABLE `posts_tags` (
`id` int(11) NOT NULL auto_increment,
`post_id` int(11) default NULL,
`tag_id` int(11) default NULL,
`post_created_at` datetime default NULL,
`created_at` datetime default NULL,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `index_posts_tags_on_post_id_and_tag_id` (`post_id`,`tag_id`)
) ENGINE=InnoDB;
次に、
のposts_tagsにインデックスを追加します(tag_id, post_created_at)
これにより、クエリはファイルソートなしで、タグのすべての投稿を正しい順序で取得できるようになります。