複数のテーブルから件数【select count(*)】を1行で効率的に取得するSQLのサンプル

複数テーブルの各件数を取得するSQL

複数のテーブルがあった場合に、それぞれのテーブルにレコード件数がどれくらいずつ入っているのかを確認したい時ってありますよね。

select cout(*) すればいいのですが、一つ一つのテーブルに対してやるのも、、、。

ということで、複数のテーブルのレコード件数を1発で取得するSQLです。

select * from 
(select count(*) as count_a from TBL_A)
,(select count(*) as count_b from TBL_B)
,(select count(*) as count_c from TBL_C)

↓ ↓ ↓

すると、こんな感じで1行で取得できます。

※注意(パフォーマンスの悪い方法)

下記のようにサブクエリを使っても書けますが、

「これはやったらいけません!」

from句以降のTBL_A, TBL_B, TBL_Cの直積(全部のレコードの組み合わせ)の件数のレコードが返ってきますので、おそろしくパフォーマンスが悪いためです。下手をすると、全く応答が返ってこなくなるので、気をつけてください。

select 
(select count(*) from TBL_A) as count_a
, (select count(*)  from TBL_B) as count_b
, (select count(*) from TBL_C) as count_c  
from  TBL_A, TBL_B, TBL_C

↓ ↓ ↓