2017-11-10 1 views
0

異なるタイプ/ IDのデータに対して存在しない会社と日付の表のデータを選択しようとしています。大きなテーブルで、特定のIDが同じ列に存在しないデータを選択します。クエリを高速化

他の言い方を言えば、company_id, dates_id, daily_valwh_calc_id = 344と同じ場合company_id/dates_idが存在しない場合はwh_calc_id = 368となります。

私は緩く、この例を次のようだ:

試み1:

SELECT distinct on (company_id, dates_id) company_id, dates_id, daily_val 
FROM daily_data d1 
WHERE NOT EXISTS (
         SELECT 1    
         FROM daily_data d2 
         WHERE d1.company_id = d2.company_id 
           and d1.dates_id = d2.dates_id 
           and d1.wh_calc_id = 368 
           and d2.wh_calc_id = 368 
        ) 
    and d1.wh_calc_id = 344 

問題: Select rows which are not present in other table

これらはそれで私の2回の試行されている それは超遅いです:27分

試行2:[削除]

すべての1(巨人)テーブル: のcompany_id int型(インデックス付け)、 dates_id int型(インデックス付け)、 wh_calc_id int型(インデックス付け)、 daily_val数値

私はスピードを助けるインデックスを追加する開いています物事は上がっていますが、どのような指標ですか?

Postgresの10

PS - 私は、彼らが完了する前に、両方のクエリを殺すために持っていたので、彼らが正しく書かれている場合、私は本当に知りません。うまくいけば私の記述が助けてくれるだろ

+1

私はこれは、左のように参加します:SELECT distinct(company_id、dates_id)company_id、dates_id、daily_val FROM daily_data d1 LEFT JOIN daily_data d2 ON d1.company_id = d2.company_idとd1.dates_id = d2.dates_idとd1.wh_calc_id = 368およびd2.wh_calc_id = 368 d1.wh_calc_id = 344およびd2.company_idはNULLです。使用する列に索引を作成します。表daily_data(company_id、dates_id、wh_calc_id)に索引を作成します。 –

答えて

0

I考える:

SELECT 
    d1.* 
from 
    daily_data d1 
LEFT JOIN 
    daily_data d2 
ON 
    d1.company_id  = d2.company_id 
    AND d1.dates_id = d2.dates_id 
    AND d2.wh_calc_id = 368 
    AND d1.wh_calc_id = 344 

where 
    and d1.wh_calc_id = 344 
    and d2.wh_calc_id is null 
0

私は左でそれを行うだろうが、このように参加:

SELECT distinct on (company_id, dates_id) company_id, dates_id, daily_val FROM daily_data d1 LEFT JOIN daily_data d2 ON d1.company_id = d2.company_id and d1.dates_id = d2.dates_id and d1.wh_calc_id = 368 and d2.wh_calc_id = 368 WHERE d1.wh_calc_id = 344 AND d2.company_id IS NULL;

をして使用する列の索引を作成します。これは私が何をしたいん

Create index on table daily_data (company_id, dates_id, wh_calc_id);

+0

は、私が望むことをしなかったことが分かります。 – mountainclimber

関連する問題