ホームページ >データベース >mysql チュートリアル >MySQL で DATETIME フィールドの日付部分にインデックスを付けるにはどうすればよいですか?
MySQL の DATETIME フィールドの日付部分にインデックスを作成する
DATETIME フィールドの日付部分にインデックスを作成するには、次の構文を使用できます:
CREATE INDEX idx_date ON table_name(DATE(date_field));
たとえば、transactionlist テーブルの TranDateTime フィールドにインデックスを作成するには、次のクエリを実行します。
CREATE INDEX idx_date ON transactionlist(DATE(TranDateTime));
インデックスを作成したら、それを使用して、フィールドの日付部分でフィルター処理するクエリを高速化できます。たとえば、次のクエリは idx_date インデックスを使用して、2008 年 8 月 17 日に発生したすべてのトランザクションをすばやく検索します。
SELECT * FROM transactionlist WHERE DATE(TranDateTime) = '2008-08-17';
インデックス クエリでの DATE() 関数の回避
インデックス クエリで DATE() 関数を使用すると、インデックスがバイパスされ、テーブル全体がスキャンされる可能性があることに注意することが重要です。これは、MySQL が関数を使用してインデックス付き列を変更するクエリを最適化できないためです。
代わりに、範囲クエリを使用して、検索する日付範囲を指定する必要があります。たとえば、次のクエリは idx_date インデックスを使用して、2008-08-17 から 2008-08-17 23:59:59.999999:
SELECT * FROM transactionlist WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';の間に発生したすべてのトランザクションをすばやく検索します。
以上がMySQL で DATETIME フィールドの日付部分にインデックスを付けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。