0

非常に大きなテーブルに対して SQL クエリを実行したいと考えています。ただし、最後の 100,000 行を調べるだけで済みます。現在:

SELECT * FROM bigtable WHERE columna='foobar' ORDER BY id DESC LIMIT 10 

私は同じことをしたいのですが、最後のX IDだけを見てください。

編集:最初に10万行を選択してから選択することは解決策ではありません。これにより、必要な行が 10 行以上見つかった場合でも、前の 10 万行がすべて選択されます。それはそれを遅くします。

4

3 に答える 3

4

試す

select * from 
(
  SELECT * 
  FROM bigtable 
  ORDER BY id DESC
  LIMIT 100000
) x
where columna = 'foobar' 
order by id desc
limit 10

SQLFiddle デモ

クエリが遅い場合は、 にインデックスを追加しますcolumna

于 2013-08-07T10:43:36.933 に答える
1

に複合インデックスを作成しますbigtable(columna, id)。

columnaMySQL は、インデックス内の値をシークし、2 番目のキーでソートできるほどスマートである必要があります。これはドキュメントで説明されています。

于 2013-08-07T12:37:05.457 に答える