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

ソート列、複合インデックス(MySQL)の主キーを含める必要があります

    答えは使用するエンジンによって異なります:

    • MyISAM-インデックスにIDを追加すると、役立つ可能性があります
    • InnoDB-主キーはすでに各二次インデックスの一部です。これは、innodbが主キーでソートされたBTREEに行を格納し、インデックスが実際の行を指すようにプライマリである必要があるためです。この場合、インデックスの最後にある場合は冗長になります(ただし、そうしても2回追加されることはないため、状況が悪化することはありません)。場合によっては、それを最後ではないものとして追加したい場合や、複数列のプライマリがあり、いくつかの列を異なる順序でインデックスに追加する場合があります-問題はないはずです、innodbはプライマリの残りの列をそのインデックスに追加します、ただし、以前に追加したものを複製せずに使用できます)

    だから答え:

    1. InnoDBでは不要です。MyISAMでは、実際にその並べ替えを使用する場合に適しています。使用しない場合は、追加するとインデックスが大きくなるだけです。
    2. テーブル定義の列の順序とインデックスの順序は別のものなので、問題ありません
    3. はい、そのインデックスは本当に良いようですが、説明 、さらにパフォーマンスが向上する可能性があります-"カバーインデックス 「しかし、それにはコストがかかるため、クエリが重要でパフォーマンスが低い場合を除いて、おそらくやり過ぎです。



    1. MacにSQLclをインストールする方法

    2. 問題セット2–エンティティと属性の特定

    3. MSSQLServerデータベースでのインデックスの最適化の自動化

    4. SQL結合に同じ名前の2つの列が存在する場合に、1つのテーブル列から値を取得する方法