alice99回答ポイント なしウォッチ 1

MySQLの「ORDER BY」に対するインデックス使用について質問です。

50万件程のテーブル「user」と10件程のテーブル「type」があり、
2テーブルを結合したクエリにORDER BYを使うとインデックスを張ってもusing filesortとなってしまいます。

問題のクエリはこちらです。
select * from user,type where user.type_id = type.id order by created_at DESC;
type_id…int型カラム
created_at…datetime型カラム

userテーブルへのインデックスを「created_at」に張り、複合インデックスを「type_id,created_at」に張っています。

これはORDER BYを上の形で使ってはいけないということなのでしょうか?
それとも私のインデックスの張り方やクエリがおかしいのでしょうか?

下記の記事で「自己結合」を行うことも検討しているのですが、
2つのテーブルに対する検索も行いたいため、できればインデックスで解決したいと思っています。
■MySQL の filesort プチテクニック
http://d.hatena.ne.jp/kazuhooku/20081208/1228707040

どうかお力添えをよろしくお願いします。

ログインして回答する

みんなの回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2013-11-21 12:19:12
終了日時
2013-11-28 12:20:04
回答条件
1人5回まで

この質問のカテゴリ

この質問に含まれるキーワード

MySQL2612クエリ503インデックス372テクニック456

人気の質問

メニュー

PC版