#indexが使われなくなるSQLの書き方

select a.id,b.cost, a.touroku_ymd ,b.kounyu_ymd  
from 
( 
select touroku_ymd , id 
from touroku_tbl 
) as a, 
( 
select kounyu_ymd ,id ,cost 
from kounyu_tbl 
) as b 
where a.id = b.id
;

元からインデックスの張ってあるテーブルでも、as句などで指定すると、それは新しい領域という判断になる為、インデックスが使われなくなり、めっちゃ重い!!という事になります。

以下のような記載にすれば大丈夫。

#indexが使われるSQLの書き方

select a.id,b.cost, a.touroku_ymd ,b.kounyu_ymd  
from touroku_tbl a
join kounyu_tbl b
on a.id = b.id
;
おすすめの記事