1. インデックスはnull値を保存しない より正確に言うと、単一列インデックスには null 値は格納されず、複合インデックスにはすべて null の値は格納されません。インデックスには Null 値を格納できません。したがって、この列に is null 条件を使用すると、インデックスに Null 値がないためインデックスを使用できず、テーブル全体をスキャンすることしかできなくなります。 2. キー値が少ない列(重複データが多い列)には適していません インデックス列 TYPE に 5 つのキー値があり、レコードが 10,000 件ある場合、WHERE TYPE = 1 はテーブル内の 2,000 個のデータ ブロックにアクセスします。 3. 先頭のあいまいクエリではインデックスを使用できません (「%XX」や「%XX%」など) 'AAA'、'AAB'、'BAA'、'BAB' という値を持つコードの列があり、'%AB' のようなコードが入る条件があった場合、前の条件が曖昧なので、インデックスの順序は使えず、値を一つずつ検索して条件に合っているかどうかを調べる必要があります。これにより、完全なインデックス スキャンまたは完全なテーブル スキャンが実行されます。条件が「A % 」のようなコードである場合、CODE 内の A で始まる CODE の位置を検索できます。B で始まるデータに遭遇すると、後続のデータは確実に要件を満たさないため、検索を停止できます。この方法でインデックスを活用できます。 4. インデックス障害が発生するいくつかの状況 1. 条件に or がある場合、条件にインデックスがあっても or は使用されません (これが、 or ができるだけ使用されないようにする理由です) nid = 1 または name = '[email protected]' の場合、tb1 から * を選択します。 --特殊: or 条件は、インデックスが作成されていない列がある場合にのみ無効になります。次の例では、インデックス select * from tb1 where nid = 1 or name = 'seven' を使用します。 nid = 1 または name = '[email protected]' かつ email = 'alex' の場合、tb1 から * を選択します。 2. 複数列インデックスの場合、インデックスは最初に使用される部分でない限り使用されません。 3.クエリが%で始まる tb1 から * を選択します。メールアドレスは '%cn' のようなものになります。 4. 列の型が文字列の場合、条件内でデータを引用符で囲む必要があります。そうしないと、インデックスは使用されません。 tb1 から email = 999 の * を選択します。 5. MySQL は、テーブル全体のスキャンの方がインデックスよりも高速であると判断すると、インデックスを使用しません。 6. 通常のインデックスはインデックスがないことを意味するものではない - != tb1 から * を選択します。メールアドレスが != 'alex' の場合 --特別: 主キーの場合、インデックスは引き続き使用されます。select * from tb1 where nid != 123 -> tb1 から * を選択し、メール > 'alex' を選択します。 --特別: 主キーまたはインデックスが整数型の場合、インデックスは引き続き使用されます。select * from tb1 where nid > 123 tb1 から * を選択 (num > 123) 7. 複合インデックスの左端のプレフィックス 結合されたインデックスが次の場合: (名前、メール) 名前とメールアドレス - インデックスを使用 上記は、MySQL インデックスが失敗するいくつかの状況の詳細な概要です。MySQL インデックスの失敗の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順
>>: jsは、州、市、地区の3レベルのリンクの非選択ドロップダウンボックスバージョンを実現します。
序文フェイルオーバーが発生した後、よくある問題は同期エラーです。データベースが小さい場合は、ダンプし...
jQueryプラグインの毎日の積み重ねメニュー、参考までに、具体的な内容は次のとおりです。スタックメ...
概要この記事のフレームワーク図は次のとおりです。 1. フローティングとは一体何でしょうか? W3s...
1. はじめにこれまで、テキストの特定の部分を強調したい場合、通常は太字にしたり明るい色を使用したり...
1. パフォーマンス スキーマ: はじめにMySQL 5.7 では、多数の新しい監視項目の導入、ス...
序文ロックは、複数のスレッドを実行するときにリソースへのアクセスを強制的に制限するために使用される同...
1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...
この記事ではMySQL 8.0.24バージョンのインストールと設定方法を記録し、皆さんと共有しますM...
以下のように表示されます。主に認証コマンドを実行します: 2つの方法1. 任意のホストがユーザー b...
負荷分散の概要Nginx の負荷分散実装を紹介する前に、負荷分散の分類について簡単に説明します。負荷...
本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...
導入Xiao A がコードを書いていたところ、DBA Xiao B が突然、「急いでユーザー固有情報...
目次1. 縦方向のスライス1.1 垂直データベース1.2 垂直テーブル分割2. 水平(横断)セグメン...
この記事の例では、WeChatアプレットの下部ナビゲーションバーコンポーネントの具体的な実装コードを...
一般的に言えば、HTML ドキュメント内で極端に大きな <ol> リストに遭遇する可能性...