4

自動インクリメント主キー列と日時列を持つテーブルがあります。作成日順に並べられた行を返したい。

日付または主キーのどちらで注文しても問題はありませんか? 0000-00-00 00:00:00またはタイムスタンプの日付形式とは対照的に、主キーの方が高速だと思います。新しいレコードには、より大きな主キーがあります。それでも、誰もが日付フィールドで注文します。

4

1 に答える 1

7

日付フィールドで並べ替えますが、必ず日付フィールドにインデックスを付けてください。

日付フィールドはバイナリ フィールドであり、主キーと同じくらい高速です。(日付は 3 バイトで、整数の主キーは 4 です。) ご想像のとおり、順序付けに文字列は使用しません。

さらに重要なことに、それはあなたの意図を示しています (さらに、主キーがラップアラウンドする可能性があります)。

また、innodb を使用する場合、トランザクションのインターリーブ方法によっては、主キーが正しくない可能性があります。

また、クエリ プランの読み取りに熟練している場合は、クエリに使用される同じインデックスの末尾に日付列を追加します。ただし、これは特定の状況でのみ適用されるため、役立つことがわかっている場合にのみ実行してください。つまり、やみくもにやらないでください。

于 2012-08-07T03:35:05.407 に答える