3 つの列を持つテーブルがあり、いずれも主キーではなく、3 つの列の組み合わせが一意であるテーブルに 200 万のレコードがあるとします。
列ごとにインデックスを作成するか、3 つの列すべてのインデックスをマージする方がよいでしょうか?
3 つの列を持つテーブルがあり、いずれも主キーではなく、3 つの列の組み合わせが一意であるテーブルに 200 万のレコードがあるとします。
列ごとにインデックスを作成するか、3 つの列すべてのインデックスをマージする方がよいでしょうか?
組み合わせが一意である必要がある場合は、3 つの列に対して一意のインデックスを設定します。次に、mysql-server は、最初の列の後に同じ 3 つの列を持つすべてのデータセットを拒否します。
さらに、インデックス付きの列に対して検索を実行すると、検索が高速になります。
最後になりましたが、インデックス付きの列の選択ステートメントのみを実行する場合、mysql-server はテーブル自体を読み取る必要はなく、既にすべての情報が含まれているため、インデックスのみを読み取る必要があります。それが最速の方法でしょう。