sql >> データベース >  >> RDS >> Sqlserver

主キーの並べ替え

    データはクラスター化インデックスによって物理的に保存されます。クラスター化インデックスは通常、主キーですが、そうである必要はありません。

    SQLのデータは、ORDERBY句がないと順序が保証されません。データを特定の順序にする必要がある場合は、常にORDERBY句を指定する必要があります。テーブルがすでにそのようにソートされている場合、オプティマイザは余分な作業を行わないため、テーブルを配置しても害はありません。

    ORDER BY句がないと、RDBMSは、レコードがディスクから読み込まれるのを待機している間、クエリに一致するキャッシュされたページを返す可能性があります。その場合、テーブルにインデックスがあっても、データがインデックスの順序で入らない場合があります。 (これは単なる例であることに注意してください。実際のRDBMSがこれを実行するかどうかはわかりませんが、SQL実装では許容できる動作です。)

    編集

    並べ替えるときと並べ替えないときのパフォーマンスに影響がある場合は、インデックス(クラスター化されているかどうかに関係なく)がない列(または列のセット)で並べ替えている可能性があります。時系列であるとすると、時間に基づいて並べ替えている可能性がありますが、クラスター化されたインデックスはプライマリbigintにあります。 SQL Serverは、両方が同じように増加することを認識していないため、すべてを再利用する必要があります。

    時間列と主キー列が順序で関連付けられている場合(一方が増加するか、同じままである場合にのみ増加します)、代わりに主キーで並べ替えます。これらがこのように関連していない場合は、クラスター化インデックスを主キーから並べ替える列に移動します。



    1. mysql_insert_idと更新

    2. Laravelでクエリ実行時間をテストする

    3. SQLUNIONチートシートと10の簡単で便利なヒント

    4. Oracle(11.2.0.1):UPDATEステートメントによって現在更新されている行を識別する方法