1. 先頭のあいまいクエリではインデックスを使用できません (「%XX」や「%XX%」など) コード値が「AAA」、「AAB」、「BAA」、「BAB」の列がある場合、「%AB」のようなコードが真となる条件であれば、 あいまいなので、インデックスの順序は使用できません。条件が満たされているかどうかを確認するには、1 つずつ検索する必要があります。これにより、完全なインデックススキャンまたは完全なテーブルスキャンが実行されます。 説明。条件が「A % 」のようなコードである場合、コード内でAで始まるコードの位置を検索し、Bで始まるコードに遭遇すると、 データがない場合、後続のデータは確実に要件を満たさないため、検索を停止できます。この方法でインデックスを活用できます。 2. 複合インデックスの場合、インデックスの順序どおりに検索しない場合、たとえば、3 番目の位置のインデックスを直接使用し、1 番目と 2 番目の位置のインデックスを無視すると、完全なテーブルクエリが実行されます。 インデックスはc1、c2、c3、c4です 上図の結果は、c3 を直接使用すると完全なテーブルクエリになり、インデックスを使用できないことを示しています。したがって、c3 フィールドにインデックスを使用する前提は、c1 フィールドと c2 フィールドの両方でインデックスが使用されていることです。 3. 条件に「または」が含まれている where 句で条件を接続するために または を使用することは避けてください。そうしないと、エンジンはインデックスの使用を中止し、次のようにテーブル全体のスキャンを実行します。 num=10 または num=20 の t から id を選択 次のようにクエリを実行できます。 num=10 の場合、t から id を選択 すべて結合 num=20 の場合、t から id を選択 4. インデックスはヌル値を保存できないため、where条件でフィールドに対してヌル値判定が行われた場合には、データベースはインデックスを破棄し、次のような完全なテーブルクエリを実行します。 num が null の t から id を選択 num にデフォルト値 0 を設定して、テーブルの num 列に null 値がないことを確認し、次のようにクエリを実行できます。 num=0 の t から id を選択 a. 単一列インデックスには null 値を格納することはできず、複合インデックスにはすべて null である値を格納することはできません。 b. is null 条件でクエリを実行する場合、インデックスは使用できず、テーブル全体のスキャンのみが可能です。 インデックス列に Null 値を格納できないのはなぜですか? a. インデックスは順序付けられます。 NULL 値がインデックスに入ると、どこに配置されるかを判断する方法はありません。 (インデックス列の値のツリーを構築するには、必然的に多くの比較操作が必要になります。null 値は比較できない不確実な値であり、インデックス ツリーのリーフ ノードの位置に null が出現するかどうかを判別することはできません。) 5. where 句で != または <> 演算子を使用しないようにしてください。そうしないと、エンジンはインデックスの使用を中止し、テーブル全体のスキャンを実行します。 6. in と not in も注意して使用する必要があります。そうしないと、次のようにテーブル全体のスキャンが発生します。 t から id を選択、num は(1,2,3) 連続値の場合は、in の代わりに between を使用します。 num が 1 から 3 の間の t から id を選択 7. where 句内のフィールドに対して関数操作を実行しないようにしてください。そうしないと、エンジンがインデックスの使用を中止し、テーブル全体のスキャンを実行することになります。のように: –id 名前がabcで始まる t から id を選択し、substring(name,1,3)='abc' となる 8. where 句内のフィールドに対する式操作は避けてください。これにより、エンジンはインデックスの使用を中止し、テーブル全体のスキャンを実行します。のように: num/2=100 となる t から id を選択 次のように変更する必要があります: num=100*2 の t から id を選択 要約する これで、MySQL インデックスが失敗するいくつかの状況に関するこの記事は終了です。MySQL インデックスの失敗の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Dockerでudpポート番号を指定する問題を解決する
>>: 写真のプレビューとアップロード機能を実現するhtml+css+js
目次序文SQL文の最適化遅いクエリSQLを記録する設定を変更する方法スロークエリログを表示するSQL...
1. 2 列レイアウトとは何ですか? 2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと...
最近、弁護士推薦のウェブサイトを作成していたのですが、検索ボックスに問題がありました。検索ボックス内...
1. Mariaソースを追加する vi /etc/yum.repos.d/MariaDB.repo...
HTML にはデータ属性が含まれていることがよくあります。これらは HTML5 のカスタム属性です。...
以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピー<htm...
Docker をインストールし、Docker コアとインストールを通じて簡単な操作を実行できます。 ...
Docker の基本的な手順:アップデートパッケージ yum -y アップデートDocker仮想マシ...
データベースは、どのオブジェクトにどのフィールドが含まれているかを照会します。 *を選択 sysob...
(Win7 システム) VMware 仮想マシンのインストール チュートリアルVMware は仮想マ...
1. MySQLサービスをシャットダウンする# service mysqld stop 2. rpm...
目次1 背景2 コンテナを作成する3 SAパスワードを変更する4 mssql のリンク5. コンテナ...
目次スロークエリの基礎: データ取得の最適化データベースから不要なデータが要求されていないか確認する...
Idea は既存の Web プロジェクトをインポートして Tomcat に公開しますが、Tomcat...
物理的に言えば、InnoDB テーブルは、共有テーブルスペース ファイル (ibdata1)、排他テ...