私はこれらのフィールドを持つテーブルがあります:userid、logintime、birthdate
誕生日XとYの間のすべてのユーザーを、最近ログインした順に並べる必要があります。私はちょうどbirtdateにインデックスを定義した場合mysqlクエリの結果の注文の問題
SELECT *
FROM table
WHERE birtdate BETWEEN x AND Y
ORDER BY logintime DESC
、mysqlは私は避けたいの結果を注文するfilesortレコード使用します(表が大きされ、クエリが人気です)。
logintimeもWHERE句(私は誕生日で、結果セットを制限しています)
mysqlの中の任意のエレガントな解決策ではないので、インデックス(logintime、誕生日は)私には意味がないの定義?
「ORDER BYがインデックスによって満たすことができる」と言う指数は誕生日であるが、filesortレコードはデータベースダウン湿原を開始しています。 BETWEENには索引が使用されているため、問題はありません。私はそこにはアドオン(memcache)などを必要としないmysqlの解決策があることを望んでいた – Rado
birtdate、logintime(上で述べたように、インデックス、logintimeのインデックス、birtdateはクエリを満たすことができない) –