2つのテーブルがあるとしましょう。
customers
質問のために、それらが とと呼ばれる 2 つのテーブルであると仮定しましょうcars
。
Customers
id name age
Cars
id customer_id brand_id engine cc
customer_id にインデックスを付ける必要がありますか? それは何か利点がありますか?
2つのテーブルがあるとしましょう。
customers
質問のために、それらが とと呼ばれる 2 つのテーブルであると仮定しましょうcars
。
Customers
id name age
Cars
id customer_id brand_id engine cc
customer_id にインデックスを付ける必要がありますか? それは何か利点がありますか?
強調したいのはInnoDB
、外部キー列に自動的に作成されたインデックスです。innodb-foreign-key-constraintsを参照してください
あなたの場合customer_id
、外部キー制約が適用されている場合。
アプリケーションのビジネス ロジックとベースのクエリ方法に応じて、customer_id にインデックスを設定すると、次のようなクエリで大きな利点が得られます。
select * from customers join cars on customer_id = customers.id -- list all customers with their associated cars
あるいは
select * from cars where customer_id = 2 -- list all cars for user 2
より一般的には、外部キー制約にインデックスを付けることは常に良い考えです。