2百万以上のレコードを持つ "users"テーブルを使用しています。クエリは次のとおりです。ORDER BY LIMITクエリのMySQLインデックス使用方法
SELECT * FROM users WHERE 1 ORDER BY firstname LIMIT $start,30
"firstname"列がインデックスに登録されています。最初のページの取得は非常に高速ですが、最後のページの取得は非常に遅いです。
私は取得しています
EXPLAIN SELECT * FROM `users` WHERE 1 ORDER BY `firstname` LIMIT 10000 , 30
用:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users index NULL firstname 194 NULL 10030
しかし、私は取得しています
EXPLAIN SELECT * FROM `users` WHERE 1 ORDER BY `firstname` LIMIT 100000 , 30
ため
私は結果であり、ここでEXPLAINを使用し、
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users ALL NULL NULL NULL NULL 2292912 Using filesort
問題点を教えてください。
あまりにも多くスキップします。 –
'ANALYZE TABLE users'文を実行して、それが役立つかどうか確認してください。 –