2016-11-09 15 views
0

私は約800kのレコードを持つ2つのビューに参加しようとしています。私は、以下のクエリを実行しようとすると、それは本当に実行するのに長い時間(以上20分)かかります。..2つのビューを結合するSQLクエリの最適化

だから、2つのビュー..

表示Aがあります。

colA colB colC 
===================== 
valueA valueB valueC 

ビューBは、 :

colD colE colA 
===================== 
valueD valueE valueA 

は、colAでこれら2つのビューを結合する必要があります。 SO私が使用しているクエリは次のとおりです。私は、行のカウントを取得する必要があり、ビューで重複があるように私は、「明確な」キーワードを使用していた

select 
count(*) 
from 
    ( 
    select colA, colB, colC 
     from viewA a 
    inner join 
     viewB b on a.colA=b.colA and a.colA in (select distinct colA from viewA) 
     and 
     b.colA in (select distinct colA from viewB 
    ); 


plzを私に教えてもらえますか、なぜそのクエリが長時間かかるのですか?

+0

サンプル・データおよび望ましい結果にどのように多くの異なる見つけようとしている場合。 –

+1

サブクエリのポイントは何ですか? 'とa.colA in(viewAから異なるcolAを選択します)'とは何ですか? –

+0

各ビューにcolAの重複があり、別個の列のみを結合したい。 @Alex – CodingFreak

答えて

0

あなただけの「コーラ」は本当にあなたが何をしたいのか説明するのに役立つだろう両方のビュー

select count(distinct a.colA) 
from viewA a 
inner join viewB b on a.colA = b.colA