1. ホーム
  2. mysql

[解決済み] MySQL - なぜすべてのフィールドにインデックスを作らないのか?

2022-08-14 22:08:17

質問

最近、インデックスのすばらしさを知り、パフォーマンスが劇的に改善されました。しかし、学んだことすべてをもってしても、この質問に対する答えを見つけることができないようです。

インデックスは素晴らしいものですが、なぜ誰かがすべてのフィールドにインデックスを付けて、テーブルを信じられないほど速くすることができなかったのでしょうか?これをしない正当な理由があると思いますが、30 フィールドのテーブルで 3 フィールドはどうでしょうか。30フィールドに10フィールドはどうでしょう?どこで線を引くべきでしょうか、そしてその理由は?

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

インデックスはメモリ (RAM) のスペースを占有します。インデックスが多すぎたり大きすぎたりすると、DB はディスクとの間でインデックスをスワップする必要が出てきます。 また、挿入と削除の時間も長くなります (挿入/削除/更新されるデータごとに各インデックスを更新する必要があります)。

無限のメモリがあるわけではありません。すべてのインデックスがRAMに収まるようにすること=良いことです。

無限の時間があるわけではありません。インデックスが必要な列だけにインデックスを付けることで、挿入・削除・更新のパフォーマンスヒットを最小にすることができます。