ホームページ >データベース >mysql チュートリアル >MySQL で DATETIME フィールドの日付部分にインデックスを付けるにはどうすればよいですか?

MySQL で DATETIME フィールドの日付部分にインデックスを付けるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-17 22:24:02307ブラウズ

How to Index the Date Part of a DATETIME Field in MySQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。