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

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

Mary-Kate Olsen
リリース: 2024-12-15 03:54:12
オリジナル
239 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート