背景テーブルでは、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 メソッド
コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...
世論調査の理解実際、ポーリングの焦点はループ自体ではなく、実行間の間隔にあります。 Ajax は非同...
この記事では、MySQL データベースでよく使用される SQL ステートメントを例を使用して説明しま...
テストでは、ページ定義がutf-8でエンコードされている場合、 js ファイルに中国語などのマルチバ...
1. はじめに:友人はシステム知識を学びたいと考えており、Apple のラップトップを使用していまし...
HTML で余分なテキストを省略記号として表示したい場合は、いくつかの方法があります。 1行テキスト...
HTML では、<img> タグはテキスト内の画像タグを定義するために使用されます。その...
レイアウトにul>liを使用した単一行レイアウトを以下に示します。 <ul class=...
この記事では、jsでスライダーをドラッグする方法の具体的なコードを参考までに共有します。具体的な内容...
目次プラグインとはプラグインの作成プラグインの使用要約するプラグインとはVue フレームワークでは、...
Linuxバージョンのアップグレード: 1. まず、Linuxオペレーティングシステムに付属するPy...
目次1. MySQLイメージを取得する2. ダウンロードが完了したか確認する3. MySQLはローカ...
ピップとは何かpip は、Python パッケージの検索、ダウンロード、インストール、アンインストー...
1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...
目次1. コンポーネント通信1. Props 親コンポーネント ---> 子コンポーネント通信...