mysqlでインデックスを使用する際に注意すべき点は何ですか?

王林
リリース: 2020-09-30 13:36:09
オリジナル
3283 人が閲覧しました

Mysql はインデックスを使用するときに注意する必要があります: 1. カラムの NULL 値はインデックスに含まれません; 2. 文字列カラムのインデックスを作成するときは、プレフィックスの長さを指定する必要があります; 3. Mysql クエリのみインデックスを使用する; 4. 列に対して演算を実行しない; 5. NOT IN 演算を使用しない。

mysqlでインデックスを使用する際に注意すべき点は何ですか?

注:

(推奨チュートリアル: mysql チュートリアル)

1. インデックスは次のとおりです。 NULL 値を含む列ではありません

列に NULL 値が含まれている限り、それらはインデックスには含まれません。複合インデックスに NULL 値を含む列が存在する限り、この列はは、この複合インデックスでは無効になります。したがって、データベースを設計するときは、フィールドのデフォルト値を NULL にしないでください。

2. 短いインデックス

を使用して文字列のインデックスを作成します。可能であれば、プレフィックスの長さを指定する必要があります。たとえば、CHAR(255) 列がある場合、ほとんどの値が最初の 10 文字または 20 文字内で一意である場合は、列全体にインデックスを付けないでください。短いインデックスはクエリ速度を向上させるだけでなく、ディスク領域と I/O 操作を節約します。

3. インデックス列のソート

MySQL クエリはインデックスを 1 つだけ使用するため、インデックスが where 句で使用されている場合、順序付けされた列はインデックスを使用しません。したがって、データベースのデフォルトの並べ替えで要件を満たすことができる場合は、並べ替え操作を使用しないでください。複数の列の並べ替えを含めないようにしてください。必要に応じて、これらの列に対して複合インデックスを作成することをお勧めします。

4. like 文の操作

一般に like 操作の使用は推奨されていませんが、どうしても使用しなければならない場合には、どのように使用するかも問題になります。 「�a%」のようにインデックスは使用されませんが、「aaa%」のようにインデックスが使用されます。

5. 列に対して操作を実行しないでください。

は次のとおりです:

select * from users where YEAR(adddate)<2007;
ログイン後にコピー

は各行に対して操作を実行するため、インデックスが失敗し、テーブル全体が実行されます。スキャンするので、これを次のように変更できます:

次のように:

select * from users where adddate<‘2007-01-01&#39;;
ログイン後にコピー

6. NOT IN および <> 演算を使用しないでください

次の文インデックスを使用します:

SELECT * FROM mytable WHERE username like&#39;admin%&#39;
ログイン後にコピー

次の文では使用しません:

SELECT * FROM mytable WHEREt Name like&#39;%admin&#39;
ログイン後にコピー

関連する推奨事項: php training

以上がmysqlでインデックスを使用する際に注意すべき点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート