2009-06-21 12 views
1

私はMySQLが初めてですが、しばらくOracleを使用しています。私は、MySQLのLIMITキーワードについて少し混乱しています。このキーワードは、クエリが実行されるたびに返されるデータの順序が同じであることを意味しますか?クエリに影響を与えるテーブルにデータを追加するとどうなりますか? order-by句が存在しない場合、データの順序はどのようになりますか?MySQLのLIMITキーワードは返されるデータの順序を保証しますか?

答えて

4

いいえ、LIMITは非決定的です。順序は、データ、使用されるインデックス、mysqlバージョン間の内部変更、ディスク上のデータの順序などによって異なります。

通常、これを避けるにはLIMITORDER BYを組み合わせます。

1

ORDER BYを指定しない限り、最初に戻される行が保証されません。

実際には、注文は通常、クラスタ化されたインデックスの順序と一致し、呼び出しごとに変わることはありません。この動作に頼らないでください。

2

LIMITは返されたデータに順序付けを行いません。

ORDER BY句を使用しない限り、制限が実行されるたびに同じ制限が返されるという保証はありません。データが挿入されると、これは順序付けられた結果と順序付けられていない結果の両方の結果に影響する可能性があります。

ORDER BY句を省略すると、基本的には順序付けを決定するデータベースに依存し、おそらくテーブルの索引付け方法に基づいています。これは、テーブルが再インデックスされたり、より多くのデータが追加されたりすると、時間とともに変化します。

関連する問題