またやっちまった orz

 あるuserid列を持ったテーブルhogeがあります。行数は15万行ぐらい。
 userid外部キーな「貸し出し履歴」テーブル inhist があります。
 userid外部キーな「返却履歴」テーブル outhist があります。
 ここで、「useridごとの、貸し出し回数と返却履歴を見たい」ということを考えます。
 単純にjoinすればいいのですが、なんか深読みして(MySQLのoptimizer?にやられたので)自分で制御してみることにしました。

  select hoge.userid, 
     (select count(*) from inhist where inhist.userid=hoge.userid),
     (select count(*) from outhist where outhist.userid=hoge.userid)
    from hoge

 この副問い合わせの場合に、重要なのはあきらかに inhist,outhistテーブルのuseridにインデックスが貼られていることです。もちろん、貼りました。さっそく実行。(13:00)

.

正直スマンカッタ (16:10)
 行数も多いよね…

 ちゃんとEXPLAINしないと、だめよねえ(笑) _| ̄|○