最近、MySQLにoffset
機能があることがわかりました。オフセットの結果、またはオフセットと制限バリアントの違いについてのドキュメントを探していましたが、探しているものが見つからないようです。
テーブルに10.000行あり、行1.000から25件の結果が必要だとします。これまでのところ、私は同じ結果を得るために両方を行うことができました:
SELECT id,name,description FROM tablename LIMIT 1000,25
SELECT id,name,description FROM tablename LIMIT 25 OFFSET 1000
私が知りたいのは、この2つの違いです。
- これは実際に同じことをするのですか、それとも私の理解は間違っていますか?
- 大きなテーブルでは1つ遅い/速い
- 変更するとオフセットの結果は変わりますか
WHERE column=1
(たとえば、列に100を超える異なる値がある) - オフセットの結果を変更したとき
ORDER BY column ASC
(ランダムな値があると仮定して)
これが「愚かな」質問であり、誰かがその主題を啓発する文書を知っている場合は、それらを返信に追加してください。
私は、オフセットがデータベースで見つかった最初のX行をスキップして、ソートと場所を無視していると感じています。
MySQLのドキュメントはこれを完全に説明しています。自分で見たくない理由はありますか?
—
siride 14
「PostgreSQLとの互換性のために、MySQLはLIMIT row_count OFFSETオフセット構文もサポートしています。」(dev.mysql.com/doc/refman/5.5/en/select.htmlから)。
—
siride 14
これはまだ私の質問に答えないので。あなたの引用(およびページ上のテキスト)から、オフセットは制限と同じものであると結論付けるべきです。
—
Martijn 14
同じことを表現するための構文は異なります。他のサブ質問は、タイトルや投稿の最初の部分とは完全に異なります。
—
siride 14
同じことであれば、どちらの状況でも他のクエリへの影響は変わらないことを理解しています。私はそれが同じことだとは確信していませんでした、それが私が探していた答えでした、ありがとう。
—
Martijn、2014