MySQL インデックスの比較: Integer と DateTime
これまでの議論ではインデックスを作成せずに Timestamp フィールドと DateTime フィールド タイプを比較しましたが、この調査では特に次の点に焦点を当てています。数百万のレコードを持つ InnoDB テーブルのインデックス付き int に対するインデックス付き DateTime のパフォーマンス。
これらのシナリオでは、次の条件に基づくクエリが実行されます。
実験的評価
MySQL 5.1.41 と 1,000 万レコードを使用した初期テストでは、int の速度の顕著な利点が実証されました。
Query | DateTime with Index (sec) | int with Index (sec) |
---|---|---|
COUNT(*) | 120.27 | 25.02 |
BETWEEN | 8.41 | 1.56 |
説明
int の効率は、インデックスをクエリ条件と直接比較できるため、MySQL が日付を解析して変換する必要がなくなりました。対照的に、DateTime では、日付と時刻のコンポーネントを抽出して比較するために追加の処理が必要です。
追加の考慮事項
同じテーブルに格納された両方のフィールド タイプを使用した後続のテストでは、同様の結果が得られました。
結論
これらの結果に基づいて、日付と時刻を保存することが推奨されます。インデックスベースのクエリのパフォーマンスが最も重要な場合は、int (UNIX タイムスタンプ) として使用します。この最適化により、特に日付ベースの条件が頻繁に使用される大規模なデータベースで、クエリの実行時間を大幅に短縮できます。
以上が大規模なデータセットの場合、整数インデックス作成は DateTime インデックス作成より高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。