Tabela 1
Kod
Kolumna Typ
g_id mediumint(8)
t_id_1 smallint(5)
t_id_2 smallint(5)
g_team_1 varchar(50)
g_team_2 varchar(50)
g_date datetime
g_live tinyint(3)
g_id mediumint(8)
t_id_1 smallint(5)
t_id_2 smallint(5)
g_team_1 varchar(50)
g_team_2 varchar(50)
g_date datetime
g_live tinyint(3)
Indeks primary na g_id oraz dodatkowy indeks na (t_id_1, t_id_2, g_date, g_live)
Tabela 2
Kod
Kolumna Typ
t_id smallint(5)
t_gw_name varchar(50)
gw_cid tinyint(3)
t_id smallint(5)
t_gw_name varchar(50)
gw_cid tinyint(3)
Indeks primary na t_id
Zapytanie:
SELECT g_id, t_id_1, t_id_2, g_team_1, g_team_2, g_date, g_live, t1.t_gw_name AS t_gw_name_1, t1.gw_cid AS gw_cid_1, t2.t_gw_name AS t_gw_name_2, t2.gw_cid AS gw_cid_2 FROM t_games JOIN t_teams t1 ON (t_id_1 = t1.t_id) JOIN t_teams t2 ON (t_id_2 = t2.t_id) WHERE g.g_date < "2013-07-24 20:00:00" AND g.g_live < 2
Jako explain dostaję:
Kod
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE g ALL t_id_1 NULL NULL NULL 16 Using where
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 2 t_id_1 1
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 2 t_id_2 1
1 SIMPLE g ALL t_id_1 NULL NULL NULL 16 Using where
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 2 t_id_1 1
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 2 t_id_2 1
Co należałoby podmienić, aby pozbyć się pełnego skanowania?