簡単な答え:
インデックスはSELECTを高速化します の速度を落とし、INSERT の。
selectの速度が上がるため、通常はインデックスを作成することをお勧めします。 insertを遅くする以上のこと 。
UPDATEについて インデックスは物事をスピードアップすることができます WHEREでインデックス付きフィールドが使用されている場合 updateの場合は、句を使用して処理を遅くします インデックス付きフィールドの1つ。
インデックスをいつ使用するかをどのように知るか
EXPLAINを追加します SELECTの前 ステートメント。
そのように:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
インデックス付けされていない各フィールドでMySQLが実行する必要のある作業量が表示されます。
使用 その情報は、インデックスを追加する価値があるかどうかを判断できます。
Explainは、ドロップしてインデックスを作成する方がよいかどうかも教えてくれます
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
選択された行が非常に少ない場合、またはMySQLが無視することを決定した場合 インデックス(時々それを行います) 次に、インデックスを削除することをお勧めします。これは、インデックスがであるためです。 insertの速度を落とす sただし、selectの速度は上がりません
次に、selectステートメントが十分に賢くない可能性もあります。
(答えが複雑であるため、申し訳ありませんが、単純にしようとして失敗しました)。
リンク:
MySQLインデックス-何ですかベストプラクティス?