sql >> データベース >  >> RDS >> Mysql

SQLテーブルフィールド(MySQL)にインデックスを追加するのはいつですか?

    SQLテーブルのどこでインデックスを使用するかは必ずしも明確ではありません。ただし、ほとんどの場合、決定に役立つ一般的な経験則がいくつかあります。

    1. where句で使用されている列にインデックスを付ける
    2. 結合に使用する列にインデックスを付けます。
    3. 同じテーブルの列に4〜5個を超えるインデックスを使用しないようにしてください。

    そして、覚えておくべき一般的な概念は次のとおりです。

    1. 使用するインデックスを使用すると、それらの列の検索が高速になります。
    2. 追加したインデックスにより、このテーブルへの挿入が少し遅くなります。
    3. 前の2つから。インデックスを使用するかどうか、およびどの列で使用するかを決定するために、テーブルに対して実行する挿入とクエリの数を決定するのはユーザーの責任です。

    編集

    @AndrewLazarusのコメントは非常に重要であり、私はそれを回答に追加することにしました:

    1. 異なる値が少ない列にはインデックスを使用しないでください。たとえば、状態が少ない場合に状態を保持する列、またはブール値。そうしない理由は、インデックスは値の数で除算されるだけであり、値の数が少ないため、実際のメリットがないため、実際には役に立たないためです。テーブルはインデックスでより多くのスペースを消費し、挿入時にプリフォームが遅くなりますが、クエリ中にパフォーマンスが大幅に向上することはありません。


    1. SQL:ストアドプロシージャのin句:値を渡す方法

    2. MariaDBでサーバー照合を取得する3つの方法

    3. IS DISTINCTFROMとISNOTDISTINCT FROMを書き直す方法は?

    4. PostgreSQLメジャーバージョン8.4.x/9.3.xのアップグレード中のSlony-Iでのスイッチオーバー/スイッチバック