0

mysql Explain を実行して 1 つのクエリをチェックしたところ、結果をソートするために 250000 を超えるレコードをチェックする必要があることに驚きましたが、where 句のインデックスがあり、mysql Explain が提供しているものは何でも、新しい行がたくさんあることに完全に同意しますが追加されたので、この問題を整理する方法 .mysql テーブル構造は

 tableA is a forum where users can post the content 

  id         userid       created       title

  1          3            12232         xyz
  2          etc...............

私のmysqlクエリは

  explain SELECT * from tableA   where userid='2' order by created desc limit 3

この説明クエリの出力は

  id    select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
  1     SIMPLE  tableA  ref     userid  userid  4   const   275216  Using where; Using temporary; Using filesort

私の心配は、3つの結果のみを表示することに興味があるため、これを3〜4に減らす方法ですが、mysqlは出力を表示する前に275216レコードを検索しています。ユーザーID 2がフォーラムに投稿された後に275216レコードが作成されたため、特定のデータのみを検索して、非常に小さな行セットから結果を検索できるようにmysqlに指示する解決策は何ですか?mysqlが検索する最大20〜30行が必要ですサーバーへ 3 行

4

1 に答える 1

0

これを試して::

SELECT * from tableA  FORCE INDEX (userid) where userid=2 order by created desc limit 3
于 2013-02-03T12:20:49.923 に答える