愚かな質問かもしれませんが、私はカーテンの後ろに何が起こっているのか不思議です。MySQLでLIMITとOFFSETを使用するのは、完全なレコードセットを返すよりも安価ですか?
データベースレコードのページ番号を設定する場合は、LIMITとOFFSETのどちらかを使用するか、すべてのレコードを取得して、より多くのコードで必要なものを推測することができます。
私はちょうど私がLIMITを使用して、私が求めるだけで何のデータベースのグラブがする、または内部的にすべてのレコードを取得しますが、OFFSET場合、それは
より高価であるかどうかを知りたい、第二の選択肢は絶対に愚かなことを知っています私のクエリ(何十万も)と一致し、レコードの要求されたサブセットを取得するために開始インデックス(OFFSET)と終了インデックス(OFFSET + LIMIT)を内部的に使用しますか?
私が疑問を説明するために適切な言葉を使用したかどうかは分かりませんが、私は誰かが光を放つことを願っています。
ありがとうございます!
私たちはクエリを注文する必要がありますが、多くの時(特に、ページ区切りの環境を想定したリミットとオフセットがある場合)には、すばらしい答えと良い呼び出しが必要です。しかし、再び、素晴らしい答え、たくさんのお付き合いありがとうございます –
あなたがあなたのクエリをどのように構築するかに応じて注文するかどうかは、返さなければならないよりも多くの行を生成する必要があります。例えば、order byとgroup by節の両方に同じ列が現れるなど、注文に使用されたインデックスと結果行数の間に1対1の対応がある場合、データベース*は行をスキップすることができますオフセットによってトリミングされます。少なくとも、オーダーに使用されている同じ索引を中心に照会を計画することができれば、制限で調整された後続の行は生成する必要はありません。 – SingleNegationElimination
TokenMacGuyには良い点があります。処理を最適化するために、特別なケースとして結果と一致するようにインデックスを最適化することが可能です。 –