MySQL - すべてのフィールドにインデックスを付けないのはなぜですか? 質問する

MySQL - すべてのフィールドにインデックスを付けないのはなぜですか? 質問する

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

インデックスは素晴らしいですが、テーブルを驚くほど高速化するために、すべてのフィールドにインデックスを付けられないのはなぜでしょうか。これを行わない正当な理由があるのは確かですが、30 フィールドのテーブルに 3 つのフィールドはどうでしょうか。30 フィールドのテーブルに 10 フィールドはどうでしょうか。どこで線を引くべきでしょうか。その理由は何でしょうか。

ベストアンサー1

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

メモリは無限ではありません。すべてのインデックスが RAM に収まるようにすれば問題ありません。

時間は無限ではありません。インデックス付けが必要な列のみにインデックス付けすることで、挿入/削除/更新のパフォーマンスへの影響を最小限に抑えることができます。

おすすめ記事