usersとfavoritesが1対多になるようにして、
indexの設定あり・なしの2つのDBを用意して比較しました。
予め、
usersは 100,000件
favoritesに300,000件のレコードを用意しました。
indexなし
・テーブル作成
create table users(
id int(11) not null primary key auto_increment,
name varchar(40) not null
) engine=innodb;
create table favorites(
user_id int(11) not null,
favorite_name varchar(40) not null
) engine=innodb;
・select
・explain
indexあり
・テーブル作成
create table users(
id int(11) not null primary key auto_increment,
name varchar(40) not null
) engine=innodb;
create table favorites(
user_id int(11) not null,
favorite_name varchar(40) not null,
foreign key(user_id) references users(id)
) engine=innodb;
・select
・explain
結果
- indexなし クエリ実行時間 0.38 秒
- indexあり クエリ実行時間 0.0005秒
explainの結果から、indexがないと
テーブルのフルスキャンが発生してしまっていることがわかりました。