背景テーブルでは、dataTime フィールドは varchar 型に設定され、保存されるデータは日付形式で、フィールドにインデックスが設定されます。しかし、ログ レコードには、このテーブルに関する遅いクエリがあります。クエリステートメントは次のとおりです。 探検する1:当初、dataTime フィールドの型が varchar であると考えられていたため、MySQL は日付のサイズ順ではなく文字列順にインデックスをソートし、範囲クエリを実行するときに日付順にインデックス範囲のパーティション分割を実行できませんでした。そこで、dataTime を datatime 型に変更してステートメントを分析したところ、依然として完全なテーブルスキャンが行われていることがわかりました。 2:クエリ条件の値を変更する digitaltwin_meteorological から count(*) を選択します。ここで、dataTime > '2021-10-15' です。 実行結果は3910です。 EXPLAIN デジタルツインのmeteorologicalから*を選択し、dataTime > '2021-10-15'を選択します。 SQL ステートメントの分析結果は、完全なテーブルスキャンです。 レコードの数を確認するために、クエリ条件を 16 に変更します。 digitaltwin_meteorological から count(*) を選択します。ここで、dataTime > '2021-10-16' です。 クエリ結果は 2525 です。16 番のクエリ ステートメントを分析してみましょう。 EXPLAIN デジタルツインのmeteorologicalから*を選択し、dataTime > '2021-10-16'を選択します。 実行結果は、インデックスを使用する範囲クエリです。 このことから、クエリされるレコードの数が多い場合、MySQL はフル テーブル スキャンの方が効率的であると判断してフル テーブル スキャンを実行することがわかります。クエリ内のレコードが少ない場合、MySQL はインデックス クエリを使用します。 3: dataTime を datetime データ型に変更した場合、クエリ条件に引用符を追加する必要がありますか? dataTime クエリ条件の引用符を削除して結果を確認します。 EXPLAIN digitaltwin_meteorological から * を選択し、dataTime > 2021-10-16 を指定します。
digitaltwin_meteorological から count(*) を選択します。ここで、dataTime > 2021-10-16 です。 計算結果は 19714 となり、これはテーブル全体のデータです。そのため、datetime クエリ条件も引用符で囲む必要があります。 4: 上記の分析はすべて、datetime 型の場合の dataTime に関するものです。元のフィールド タイプは varchar なので、これを varchar タイプに変更すると、上記の結論は依然として当てはまりますか? タイプを変更して、SQL を再度実行します。 EXPLAIN select * from digitaltwin_meteorological where dataTime > '2021-10-16'; varchar 型に変更すると、クエリ 16 は範囲スキャンではなくフル テーブル スキャンになることがわかります。 EXPLAIN デジタルツインのmeteorologicalから*を選択し、dataTime > '2021-10-17'を選択します。 17日のクエリではインデックスクエリが使用されました。 17日のデータ量は1749であることがわかります。 要約する上記の分析を通じて、次のような結論を導き出すことができます。 MySQL が日付フィールド インデックスを使用しない理由に関するこの記事はこれで終わりです。MySQL 日付フィールド インデックスに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS スタイルで一般的なグラフィック効果を示すサンプルコード
>>: 入力ボックスのプレースホルダーテキストのデフォルトの色を変更する -webkit-input-placeholder メソッド
httpリターンコードリスト(以下は概要です)詳細な中国語の説明についてはここをクリックしてくださ...
:= と = の違い=設定および更新の場合にのみ、:= と同じ効果、つまり代入効果があり、それ以外の...
コンテンツ属性は通常、::before および ::after 疑似要素で使用され、疑似要素のコンテ...
MySQL はディスクに保存される永続的なストレージであり、取得には一定の IO が伴うことはご存じ...
この記事では、例を使用して、MySQL データベースの最適化のためのインデックス実装の原則と使用方法...
mysqlslap共通パラメータの説明–auto-generate-sql システムはテスト用のSQ...
サーバーの配置数日間無料で使用できるクラウドサーバー(Alibaba Cloud、Huawei Cl...
多方向探索ツリー完全二分木の高さ: O(log2N)、ここで2は対数完全なM方向探索木の高さ: O(...
Ubuntu 20.04 をインストールした後、デフォルトでは root アカウントのログイン権限が...
フレームとは、Web ページ画面を複数のフレームに分割したもの(複数の Web ページという形で表示...
Centos6.4 で mysql5.7.18 をインストールするための具体的な手順が全員に共有され...
MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...
目次序文Ajax シリアルおよびパラレルAjaxの同時リクエスト制御のための2つのソリューションPr...
目次序文Vue Nativeの機能宣言的レンダリング双方向バインディングVue.js エコシステムの...
目次メイントピック1. UbuntuにDockerをインストールする2. DockerにROS2-F...