1. ホーム
  2. sql

[解決済み] mysql のインデックスが多すぎる?

2023-04-26 23:20:33

質問

私は現在のデータベースを最適化するために時間を費やしています。

私は特にインデックスを見ています。

いくつか質問があります。

  • インデックスが多すぎるということはないのでしょうか?
  • インデックスは何を高速化するのでしょうか?
  • インデックスは何を遅くするのか?
  • インデックスを追加するのはいつがいいのでしょうか?
  • インデックスを追加するのはいつがよいのでしょうか?
  • マルチインデックスとマルチカラムインデックスの長所と短所?

どのように解決するのですか?

<ブロッククオート

インデックスは何を高速化するのか?

データの取り出し -- SELECT文。

インデックスを使うと何が遅くなるのか?

データ操作 -- INSERT、UPDATE、DELETEステートメント。

<ブロッククオート

インデックスを追加するのはいつが良いのでしょうか?

データ検索のパフォーマンスを上げたいと感じたとき。

<ブロッククオート

インデックスを追加するのがまずいのはどんなとき?

挿入や更新など、大量のデータ操作が行われるテーブルの場合。

マルチインデックスとマルチカラムインデックスの長所と短所?

クエリは、カバーリングインデックス(複数の列に対するインデックス)を扱う場合、インデックス列の定義において左から右へと列の順序に対処する必要があります。 ステートメント内の列の順序は重要ではなく、列 1、2、3 の順序のみが重要です。ステートメントには、インデックスを使用する前に列 1 への参照が必要です。 列 2 または 3 への参照しかない場合、1/2/3 のカバー インデックスを使用することはできません。

MySQL では、クエリ内の SELECT/ステートメントごとに 1 つのインデックスしか使用できません(サブクエリなどは別のステートメントとみなされます)。 そして、MySQL が許可する 1 つのテーブルあたりの容量には制限があります。 さらに、インデックス付きのカラムに対して関数を実行すると、インデックスは役に立たなくなります - IE。

WHERE DATE(datetime_column) = ...