#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
;

この記事が気に入ったら『目黒で働く分析担当の作業メモ』ご支援をお願いします!

※OFUSEに飛びます


おすすめの記事