ホームページ >データベース >mysql チュートリアル >DATETIME フィールドの日付部分で MySQL クエリを最適化するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。