知りたいこと
schoolsとmensというテーブルがあり、これを検索するとき必ずurlのカラムを使います
その場合、以下のようにテーブルをまたいて同じ「idx_url」というインデックス名にするのはアリでしょうか
sql
1create table schools ( 2 id int(10) not null auto_increment, 3 school varchar(4) not null, 4 url varchar(100) not null, 5 index idx_url(url), 6 primary key(id)); 7 8create table mens ( 9 id int(10) not null auto_increment, 10 coolness varchar(4) not null, 11 url varchar(100) not null, 12 index idx_url(url), 13 primary key(id));
それとも以下のように「idx_schools_url」と「idx_mens_url」と別々のインデックス名にする方がいいでしょうか
SQL
1create table schools ( 2 id int(10) not null auto_increment, 3 school varchar(4) not null, 4 url varchar(100) not null, 5 index idx_schools_url(url), 6 primary key(id)); 7 8create table mens ( 9 id int(10) not null auto_increment, 10 coolness varchar(4) not null, 11 url varchar(100) not null, 12 index idx_mens_url(url), 13 primary key(id));
###自分の考え
インデックスは少ない方がいいという知識しかないために前者にしようと思っています
ですが「別テーブルで同一インデックス」というのが邪道じゃないか心配です
何か不具合が起きやすいとか、使いにくいなどございませんでしょうか?
###実際の実行コード
SELECTは以下のように「url='gf80'」というwhereで2つのテーブルの検索する場合を想定しています
sql
1create table schools ( 2 id int(10) not null auto_increment, 3 school varchar(4) not null, 4 url varchar(100) not null, 5 index idx_url_schools(url), 6 primary key(id)); 7 8insert into schools (id, school, url) 9values 10(1, '梅高', '27qM'), (2, '竹高', 'ujCx'), (3, '松校', '3Ut2'), (4, '松校', '5yHQ') 11; 12 13create table mens ( 14 id int(10) not null auto_increment, 15 coolness varchar(4) not null, 16 url varchar(100) not null, 17 index idx_url_mens(url), 18 primary key(id)); 19 20insert into mens (id, coolness, url) 21values 22(1, 'イケメン', 'JBVj'), (2, '塩顔', 'gf80'), (3, '王子様', 'TQKe'), (4, '王子様', 'iiac') 23; 24 25SELECT * 26FROM schools 27WHERE url='gf80' 28UNION ALL 29SELECT * 30FROM mens 31WHERE url='gf80';
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/07 10:54
2020/05/07 11:03
2020/05/07 11:14