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

DATETIME フィールドの日付部分で MySQL クエリを最適化するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 03:54:12241ブラウズ

How Can I Optimize MySQL Queries on the Date Part of a DATETIME Field?

MySQL の DATETIME フィールドの日付部分のインデックスの作成

MySQL では、日付などのカラムの関数を使用してクエリを実行します(TranDateTime) はインデックスをバイパスする可能性があり、パフォーマンスの低下につながります。 DATETIME フィールドの日付部分のクエリを最適化するには、代わりにその部分にインデックスを作成することを検討してください。

問題

TranDateTime という名前の DATETIME フィールドを持つ大きなテーブル特定の日付のレコードをクエリするときにパフォーマンスが低下する使用方法:

SELECT * FROM transactionlist WHERE date(TranDateTime) = '2008-08-17'

解決策

パフォーマンスを向上させるには、次のクエリを使用して TranDateTime の日付部分にインデックスを作成します:

CREATE INDEX idx_TranDate ON transactionlist (DATE(TranDateTime))

このインデックスにより、MySQL は TranDateTime フィールドの日付部分に基づいて効率的にレコードを取得し、以下を最適化できます。 query:

SELECT * FROM transactionlist 
WHERE DATE(TranDateTime) = '2008-08-17'

その他の考慮事項

または、クエリでの関数の使用を避けるために、範囲クエリの使用を検討してください:

SELECT * FROM transactionlist 
WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';

このクエリは、時刻付きのものを含め、2008 年 8 月 17 日に発生したすべてのレコードを取得する必要があります。コンポーネント。

以上がDATETIME フィールドの日付部分で MySQL クエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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