เด’เดฐเต SQL เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด•เดฅ

เด•เดดเดฟเดžเตเดž เดกเดฟเดธเด‚เดฌเดฑเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต VWO เดชเดฟเดจเตเดคเตเดฃเดพ เดŸเต€เดฎเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดธเด•เดฐเดฎเดพเดฏ เด’เดฐเต เดฌเด—เต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดฒเดญเดฟเดšเตเดšเต. เด’เดฐเต เดตเดฒเดฟเดฏ เด•เต‹เตผเดชเตเดชเดฑเต‡เดฑเตเดฑเต เด•เตเดฒเดฏเดจเตเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตโ€Œเดธเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเตเด•เดณเดฟเดฒเตŠเดจเตเดจเดฟเดจเตเดฑเต† เดฒเต‹เดกเดฟเด‚เด—เต เดธเดฎเดฏเด‚ เดจเดฟเดฐเต‹เดงเดฟเดคเดฎเดพเดฏเดฟ เดคเต‹เดจเตเดจเดฟ. เด‡เดคเต เดŽเดจเตเดฑเต† เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดค เดฎเต‡เด–เดฒเดฏเดพเดฏเดคเดฟเดจเดพเตฝ, เดžเดพเตป เด‰เดŸเตป เดคเดจเตเดจเต† เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเดšเตเดšเต.

เดšเดฐเดฟเดคเตเดฐเดพเดคเต€เดคเด•เดพเดฒเด‚

เดžเดพเตป เดŽเดจเตเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, VWO-เดจเต† เด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เด•เตเดฑเดšเตเดšเต เดชเดฑเดฏเดพเด‚. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฟเดง เดŸเดพเตผเด—เต†เดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดค เด•เดพเดฎเตเดชเต†เดฏเตโ€Œเดจเตเด•เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดพเดฃเดฟเดคเต: เดŽ/เดฌเดฟ เดชเดฐเต€เด•เตเดทเดฃเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเด•, เดธเดจเตเดฆเตผเดถเด•เดฐเต†เดฏเตเด‚ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด™เตเด™เดณเต†เดฏเตเด‚ เดŸเตเดฐเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•, เดธเต†เดฏเดฟเตฝเดธเต เดซเดฃเตฝ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเด•, เดนเต€เดฑเตเดฑเต เดฎเดพเดชเตเดชเตเด•เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด•, เดธเดจเตเดฆเตผเดถเดจ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เตเด•เตพ เดชเตเดฒเต‡ เดšเต†เดฏเตเดฏเตเด•.

เดŽเดจเตเดจเดพเตฝ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเดฒเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด•เดพเดฐเตเดฏเด‚ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด†เดฃเต. เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เดชเดฐเดธเตเดชเดฐเด‚ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด•เต‹เตผเดชเตเดชเดฑเต‡เดฑเตเดฑเต เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพเด•เตเด•เต, เด…เดจเดฒเดฟเดฑเตเดฑเดฟเด•เตโ€Œเดธเต เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดถเด•เตเดคเดฎเดพเดฏ เด’เดฐเต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เด‚ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดฒเดฟเดฏ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดถเต‚เดจเตเดฏเดฎเดพเด•เตเด‚.

เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดตเดฒเดฟเดฏ เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเดฟเตฝ เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏ เด’เดฐเต เดšเต‹เดฆเตเดฏเด‚ เดจเดŸเดคเตเดคเดพเด‚. เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‡เดคเดพ:

Chrome เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ (เดฏเต‚เดฑเต‹เดชเตเดชเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเด‚ iPhone เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเตเดฎเดพเดฏ) เด†เดณเตเด•เตพเด•เตเด•เดพเดฏเดฟ "abc.com" เดชเต‡เดœเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เด•เตเดฒเดฟเด•เตเด•เตเด•เดณเตเด‚ <date d1> เดฎเตเดคเตฝ <date d2> เดตเดฐเต† เด•เดพเดฃเดฟเด•เตเด•เตเด•

เดฌเต‚เดณเดฟเดฏเตป เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผเดฎเดพเดฐเต† เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•. เดธเดพเดฎเตเดชเดฟเดณเตเด•เตพ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดเด•เดชเด•เตเดทเต€เดฏเดฎเดพเดฏเดฟ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เด‰เดจเตเดจเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด…เดต เด…เดจเตเดตเต‡เดทเดฃ เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเตฝ เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพเด•เตเด•เต เดฒเดญเตเดฏเดฎเดพเดฃเต.

เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจ

เดธเด‚เดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฏ เด•เตเดฒเดฏเดจเตเดฑเต เด…เดตเดฌเต‹เดงเดชเต‚เตผเดตเตเดตเด‚ เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เต‡เดฃเตเดŸ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต:

"/เดœเต‹เดฌเตเดธเต" เด…เดŸเด™เตเด™เดฟเดฏ URL เด‰เดณเตเดณ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเต‡เดœเต เดธเดจเตเดฆเตผเดถเดฟเดšเตเดš เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เดพเดฏเดฟ เดŽเดฒเตเดฒเดพ เดธเต†เดทเตป เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเด•

เดˆ เดธเตˆเดฑเตเดฑเดฟเดจเต เด’เดฐเต เดŸเตบ เดŸเตเดฐเดพเดซเดฟเด•เต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด…เดคเดฟเดจเดพเดฏเดฟ เดžเด™เตเด™เตพ เด’เดฐเต เดฆเดถเดฒเด•เตเดทเดคเตเดคเดฟเดฒเดงเดฟเด•เด‚ เด…เดฆเตเดตเดฟเดคเต€เดฏ URL-เด•เตพ เดธเด‚เดญเดฐเดฟเดšเตเดšเต. เด…เดตเดฐเตเดŸเต† เดฌเดฟเดธเดฟเดจเดธเตเดธเต เดฎเต‹เดกเดฒเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดฐเต URL เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด…เดตเตผ เด†เด—เตเดฐเดนเดฟเดšเตเดšเต.

เดชเตเดฐเดพเดฅเดฎเดฟเด• เด…เดจเตเดตเต‡เดทเดฃเด‚

เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚. เดฏเดฅเดพเตผเดคเตเดฅ เดธเตเดฒเต‹ SQL เดšเต‹เดฆเตเดฏเด‚ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต:

SELECT 
    count(*) 
FROM 
    acc_{account_id}.urls as recordings_urls, 
    acc_{account_id}.recording_data as recording_data, 
    acc_{account_id}.sessions as sessions 
WHERE 
    recording_data.usp_id = sessions.usp_id 
    AND sessions.referrer_id = recordings_urls.id 
    AND  (  urls &&  array(select id from acc_{account_id}.urls where url  ILIKE  '%enterprise_customer.com/jobs%')::text[]   ) 
    AND r_time > to_timestamp(1542585600) 
    AND r_time < to_timestamp(1545177599) 
    AND recording_data.duration >=5 
    AND recording_data.num_of_pages > 0 ;

เด•เต‚เดŸเดพเดคเต† เดธเดฎเดฏเด•เตเดฐเดฎเด‚ เด‡เดคเดพ:

เด†เดธเต‚เดคเตเดฐเดฃเด‚ เดšเต†เดฏเตเดค เดธเดฎเดฏเด‚: 1.480 เดฎเดฟ.เดŽเดธเต. เดจเดฟเตผเดตเตเดตเดนเดฃ เดธเดฎเดฏเด‚: 1431924.650 เดŽเด‚.เดŽเดธเต.

เดšเต‹เดฆเตเดฏเด‚ 150 เด†เดฏเดฟเดฐเด‚ เดตเดฐเดฟเด•เตพ เด•เตเดฐเต‹เตพ เดšเต†เดฏเตเดคเต. เด…เดจเตเดตเต‡เดทเดฃ เดชเตเดฒเดพเดจเตผ เดฐเดธเด•เดฐเดฎเดพเดฏ เดฐเดฃเตเดŸเต เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด•เดพเดฃเดฟเดšเตเดšเต, เดชเด•เตเดทเต‡ เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดคเดŸเดธเตเดธเด™เตเด™เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ.

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด•เต‚เดŸเตเดคเตฝ เดชเด เดฟเด•เตเด•เดพเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เด…เดตเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเต JOIN เดฎเต‚เดจเตเดจเต เดชเดŸเตเดŸเดฟเด•เด•เตพ:

  1. เดธเต†เดทเดจเตเด•เตพ: เดธเต†เดทเตป เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต: เดฌเตเดฐเต—เดธเตผ, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดเดœเดจเตเดฑเต, เดฐเดพเดœเตเดฏเด‚ เดคเตเดŸเด™เตเด™เดฟเดฏเดต.
  2. เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต_เดกเดพเดฑเตเดฑ: เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏ URL-เด•เตพ, เดชเต‡เดœเตเด•เตพ, เดธเดจเตเดฆเตผเดถเดจเด™เตเด™เดณเตเดŸเต† เดฆเตˆเตผเด˜เตเดฏเด‚
  3. url: เดตเดณเดฐเต† เดตเดฒเดฟเดฏ URL-เด•เตพ เดกเตเดฏเต‚เดชเตเดฒเดฟเด•เตเด•เต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด’เดดเดฟเดตเดพเด•เตเด•เดพเตป, เดžเด™เตเด™เตพ เด…เดตเดฏเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดžเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพ เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเด‚ เด‡เดคเดฟเดจเด•เด‚ เดชเดพเตผเดŸเตเดŸเต€เดทเตป เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเตเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• account_id. เดˆ เดฐเต€เดคเดฟเดฏเดฟเตฝ, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เด’เดฐเต เดตเดฒเดฟเดฏ เด…เด•เตเด•เต—เดฃเตเดŸเต เดฎเดฑเตเดฑเตเดณเตเดณเดตเตผเด•เตเด•เต เดชเตเดฐเดถเตโ€ŒเดจเดฎเตเดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจ เดธเดพเดนเดšเดฐเตเดฏเด‚ เด’เดดเดฟเดตเดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดธเต‚เดšเดจเด•เตพ เดคเต‡เดŸเตเดจเตเดจเต

เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เดŽเดจเตเดคเต‹ เด•เตเดดเดชเตเดชเดฎเตเดฃเตเดŸเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเต. เดˆ เดตเดฐเดฟ เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต:

urls && array(
	select id from acc_{account_id}.urls 
	where url  ILIKE  '%enterprise_customer.com/jobs%'
)::text[]

เด…เดคเตเด•เตŠเดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดพเดฏเดฟเดฐเตเดจเตเดจเต เด†เดฆเตเดฏ เดšเดฟเดจเตเดค ILIKE เดˆ เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏ เดŽเดฒเตเดฒเดพ URL-เด•เดณเดฟเดฒเตเด‚ (เดžเด™เตเด™เตพเด•เตเด•เต 1,4 เดฆเดถเดฒเด•เตเดทเดคเตเดคเดฟเดฒเดงเดฟเด•เด‚ เด‰เดฃเตเดŸเต เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฃเต เดˆ เด…เด•เตเด•เต—เดฃเตเดŸเดฟเดจเดพเดฏเดฟ เดถเต‡เด–เดฐเดฟเดšเตเดš URL-เด•เตพ) เดชเตเดฐเด•เดŸเดจเดคเตเดคเต† เดฌเดพเดงเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚.

เดชเด•เตเดทเต‡ เด‡เดฒเตเดฒ, เด…เดคเดฒเตเดฒ เด•เดพเดฐเตเดฏเด‚!

SELECT id FROM urls WHERE url ILIKE '%enterprise_customer.com/jobs%';
  id
--------
 ...
(198661 rows)

Time: 5231.765 ms

เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดคเดฟเดฐเดฏเตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เต 5 เดธเต†เด•เตเด•เตปเดกเต เดฎเดพเดคเตเดฐเดฎเต‡ เดŽเดŸเตเด•เตเด•เต‚. เด’เดฐเต เดฆเดถเดฒเด•เตเดทเด‚ เด…เดฆเตเดตเดฟเดคเต€เดฏ URL-เด•เดณเดฟเตฝ เด’เดฐเต เดชเดพเดฑเตเดฑเต‡เตบ เดคเดฟเดฐเดฏเตเดจเตเดจเดคเต เด’เดฐเต เดชเตเดฐเดถเตเดจเดฎเดฒเตเดฒ.

เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดธเด‚เดถเดฏเดฟเด•เตเด•เตเดจเตเดจเดตเตผ เดจเดฟเดฐเดตเดงเดฟเดฏเดพเดฃเต JOIN. เด’เดฐเตเดชเด•เตเดทเต‡ เด…เดตเดฐเตเดŸเต† เด…เดฎเดฟเดค เด‰เดชเดฏเต‹เด—เด‚ เดฎเดพเดจเตเดฆเตเดฏเดคเตเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเดฏเต‹? เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ JOINเดชเตเดฐเด•เดŸเดจ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดธเตเดฅเดพเดจเดพเตผเดคเตเดฅเดฟเด•เดณเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เดณเตเดŸเต† เด•เต‡เดธเต เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดตเดฟเดถเตเดตเดธเดฟเดšเตเดšเดฟเดฒเตเดฒ.

analytics_db=# SELECT
    count(*)
FROM
    acc_{account_id}.urls as recordings_urls,
    acc_{account_id}.recording_data_0 as recording_data,
    acc_{account_id}.sessions_0 as sessions
WHERE
    recording_data.usp_id = sessions.usp_id
    AND sessions.referrer_id = recordings_urls.id
    AND r_time > to_timestamp(1542585600)
    AND r_time < to_timestamp(1545177599)
    AND recording_data.duration >=5
    AND recording_data.num_of_pages > 0 ;
 count
-------
  8086
(1 row)

Time: 147.851 ms

เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดตเตเด‚ เด‡เดคเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ. JOINเดตเดณเดฐเต† เดตเต‡เด—เดฎเต‡เดฑเดฟเดฏเดคเดพเดฏเดฟ เดฎเดพเดฑเดฟ.

เดธเด‚เดถเดฏเดฟเด•เตเด•เตเดจเตเดจเดตเดฐเตเดŸเต† เดตเดฒเดฏเด‚ เดšเตเดฐเตเด•เตเด•เตเดจเตเดจเต

เดธเดพเดงเตเดฏเดฎเดพเดฏ เดชเตเดฐเด•เดŸเดจ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฒเตเด•เตพ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเต เดšเต‹เดฆเตเดฏเด‚ เดฎเดพเดฑเตเดฑเดพเตป เดžเดพเตป เดคเดฏเตเดฏเดพเดฑเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดžเดพเดจเตเด‚ เดŽเดจเตเดฑเต† เดŸเต€เดฎเตเด‚ 2 เดชเตเดฐเดงเดพเดจ เด†เดถเดฏเด™เตเด™เตพ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเดคเตเดคเต:

  • เดธเดฌเตเด•เตเดตเดฑเดฟ URL-เดจเดพเดฏเดฟ EXISTS เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•: URL-เด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เดธเดฌเตโ€Œเด•เตเดตเดฑเดฟเดฏเดฟเตฝ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เดžเด™เตเด™เตพ เดตเต€เดฃเตเดŸเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดจเต‡เดŸเดพเดจเตเดณเตเดณ เด’เดฐเต เดฎเดพเตผเด—เตเด—เด‚ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต EXISTS. EXISTS เด•เดดเดฟเดฏเตเด‚ เด…เดตเดธเตเดฅเดฏเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต‡เดฏเตŠเดฐเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดพเดฒเตเดŸเตป เด…เดคเต เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเดคเดฟเดจเดพเตฝ เดชเตเดฐเด•เดŸเดจเด‚ เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•.

SELECT
	count(*) 
FROM 
    acc_{account_id}.urls as recordings_urls,
    acc_{account_id}.recording_data as recording_data,
    acc_{account_id}.sessions as sessions
WHERE
    recording_data.usp_id = sessions.usp_id
    AND  (  1 = 1  )
    AND sessions.referrer_id = recordings_urls.id
    AND  (exists(select id from acc_{account_id}.urls where url  ILIKE '%enterprise_customer.com/jobs%'))
    AND r_time > to_timestamp(1547585600)
    AND r_time < to_timestamp(1549177599)
    AND recording_data.duration >=5
    AND recording_data.num_of_pages > 0 ;
 count
 32519
(1 row)
Time: 1636.637 ms

เดถเดฐเดฟ, เด…เดคเต†. เดชเตŠเดคเดฟเดžเตเดžเดชเตเดชเต‹เตพ เดธเดฌเตเด•เตเดตเดฑเดฟ EXISTS, เดŽเดฒเตเดฒเดพเด‚ เด…เดคเดฟเดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดคเดฟเดจเดพเดฃเต เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดŽเดจเตเดจเดคเดพเดฃเต เด…เดŸเตเดคเตเดค เดฏเตเด•เตเดคเดฟเดธเดนเดฎเดพเดฏ เดšเต‹เดฆเตเดฏเด‚ JOIN-เด†เดฎเดฟเดฏเตเด‚ เดธเดฌเตโ€Œเด•เตเดตเดฑเดฟเดฏเตเด‚ เดตเตเดฏเด•เตเดคเดฟเด—เดคเดฎเดพเดฏเดฟ เดตเต‡เด—เดคเดฏเตเดณเตเดณเดคเดพเดฃเต, เดชเด•เตเดทเต‡ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดตเดณเดฐเต† เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเดพเดฃเต‹?

  • เดธเดฌเตเด•เตเดตเดฑเดฟ CTE เดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต : เด…เดจเตเดตเต‡เดทเดฃเด‚ เด…เดคเดฟเดจเตเดฑเต‡เดคเดพเดฏ เดตเต‡เด—เดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฎเตเด•เตเด•เต เด†เดฆเตเดฏเด‚ เดซเดพเดธเตเดฑเตเดฑเต เดฑเดฟเดธเตพเดŸเตเดŸเต เด•เดฃเด•เตเด•เดพเด•เตเด•เตเด•เดฏเตเด‚ เดคเตเดŸเตผเดจเตเดจเต เดชเตเดฐเดงเดพเดจ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดจเต เด…เดคเต เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเด‚.

WITH matching_urls AS (
    select id::text from acc_{account_id}.urls where url  ILIKE  '%enterprise_customer.com/jobs%'
)

SELECT 
    count(*) FROM acc_{account_id}.urls as recordings_urls, 
    acc_{account_id}.recording_data as recording_data, 
    acc_{account_id}.sessions as sessions,
    matching_urls
WHERE 
    recording_data.usp_id = sessions.usp_id 
    AND  (  1 = 1  )  
    AND sessions.referrer_id = recordings_urls.id
    AND (urls && array(SELECT id from matching_urls)::text[])
    AND r_time > to_timestamp(1542585600) 
    AND r_time < to_timestamp(1545107599)
    AND recording_data.duration >=5 
    AND recording_data.num_of_pages > 0;

เดชเด•เตเดทเต‡ เด…เดชเตเดชเต‹เดดเตเด‚ เดตเดณเดฐเต† เดชเดคเตเด•เตเด•เต†เดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เด•เตเดฑเตเดฑเดตเดพเดณเดฟเดฏเต† เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเต

เดˆ เดธเดฎเดฏเดฎเดคเตเดฐเดฏเตเด‚, เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด•เดพเดฐเตเดฏเด‚ เดŽเดจเตเดฑเต† เด•เตบเดฎเตเดฎเตเดชเดฟเตฝ เดฎเดฟเดจเตเดจเดฟเดฎเดฑเดžเตเดžเต, เด…เดคเต เดžเดพเตป เดจเดฟเดฐเดจเตเดคเดฐเด‚ เดฎเดพเดฑเตเดฑเดฟเดตเดšเตเดšเต. เดชเด•เตเดทเต‡ เดฎเดฑเตเดฑเตŠเดจเตเดจเตเด‚ เดฌเดพเด•เตเด•เดฟเดฏเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เด…เดตเดณเต†เดฏเตเด‚ เดจเต‹เด•เตเด•เดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เดžเดพเตป เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต && เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ. เดฌเตˆ EXISTS เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฐเด•เดŸเดจเด‚ เดฎเดพเดคเตเดฐเด‚ && เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเตเดณเตเดณ เด…เดจเตเดตเต‡เดทเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเดฒเตเด‚ เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต‡เดฏเตŠเดฐเต เดชเตŠเดคเต เด˜เดŸเด•เด‚ เด†เดฏเดฟเดฐเตเดจเตเดจเต.

เดจเต‹เด•เตเด•เตเดจเตเดจเต เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚, เดžเด™เตเด™เตพ เด…เดคเต เด•เดพเดฃเตเดจเตเดจเต && เดฐเดฃเตเดŸเต เด…เดฑเต‡เด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดชเตŠเดคเตเดตเดพเดฏ เด˜เดŸเด•เด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเต‡เดฃเตเดŸเดฟเดตเดฐเตเดฎเตเดชเต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดฏเดฅเดพเตผเดคเตเดฅ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เด‡เดคเดพเดฃเต:

AND  (  urls &&  array(select id from acc_{account_id}.urls where url  ILIKE  '%enterprise_customer.com/jobs%')::text[]   )

เด…เดคเดฟเดจเตผเดคเตเดฅเด‚ เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† URL-เด•เดณเดฟเตฝ เด’เดฐเต เดชเดพเดฑเตเดฑเต‡เตบ เดคเดฟเดฐเดฏเตฝ เดจเดŸเดคเตเดคเตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เดชเตŠเดคเตเดตเดพเดฏ เดชเต‹เดธเตเดฑเตเดฑเตเด•เดณเตเดณเตเดณ เดŽเดฒเตเดฒเดพ URL-เด•เดณเตเดฎเดพเดฏเตเด‚ เด•เดตเดฒ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•. เด‡เดคเต เด…เตฝเดชเตเดชเด‚ เด†เดถเดฏเด•เตเด•เตเดดเดชเตเดชเดฎเตเดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เด‡เดตเดฟเดŸเต† "url" เดŽเดจเตเดจเดคเต เดŽเดฒเตเดฒเดพ URL-เด•เดณเตเด‚ เด…เดŸเด™เตเด™เตเดจเตเดจ เดชเดŸเตเดŸเดฟเด•เดฏเต†เดฏเดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต† "url" เด•เต‹เดณเดคเตเดคเต†เดฏเดพเดฃเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต. recording_data.

เดŽเดจเตเดจ เดธเด‚เดถเดฏเด‚ เดตเตผเดฆเตเดงเดฟเดšเตเดšเดคเต‹เดŸเต† &&, เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เด…เดจเตเดตเต‡เดทเดฃ เดชเตเดฒเดพเดจเดฟเตฝ เด…เดตเตผเด•เตเด•เตเดณเตเดณ เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฃเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเต EXPLAIN ANALYZE (เดŽเดจเดฟเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เด’เดฐเต เดชเตเดฒเดพเตป เดธเด‚เดฐเด•เตเดทเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เด•เตเดตเดฑเดฟ เดชเตเดฒเดพเดจเตผเดฎเดพเดฐเตเดŸเต† เด…เดคเดพเดฐเตเดฏเดค เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ SQL-เตฝ เดชเดฐเต€เด•เตเดทเดฃเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต เดŽเดจเดฟเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต).

Filter: ((urls && ($0)::text[]) AND (r_time > '2018-12-17 12:17:23+00'::timestamp with time zone) AND (r_time < '2018-12-18 23:59:59+00'::timestamp with time zone) AND (duration >= '5'::double precision) AND (num_of_pages > 0))
                           Rows Removed by Filter: 52710

เดซเดฟเตฝเดŸเตเดŸเดฑเตเด•เดณเตเดŸเต† เดจเดฟเดฐเดตเดงเดฟ เดตเดฐเดฟเด•เตพ เดฎเดพเดคเตเดฐเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต &&. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚ เดˆ เด“เดชเตเดชเดฑเต‡เดทเตป เดšเต†เดฒเดตเต‡เดฑเดฟเดฏเดคเต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดจเดฟเดฐเดตเดงเดฟ เดคเดตเดฃ เดจเดŸเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต.

เดˆ เด…เดตเดธเตเดฅเดฏเต† เดตเต‡เตผเดคเดฟเดฐเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดžเดพเตป เด‡เดคเต เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเต

SELECT 1
FROM 
    acc_{account_id}.urls as recordings_urls, 
    acc_{account_id}.recording_data_30 as recording_data_30, 
    acc_{account_id}.sessions_30 as sessions_30 
WHERE 
	urls &&  array(select id from acc_{account_id}.urls where url  ILIKE  '%enterprise_customer.com/jobs%')::text[]

เดˆ เดšเต‹เดฆเตเดฏเด‚ เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดŽเดจเตเดคเตเด•เต†เดพเดฃเตเดŸเต†เดจเตเดจเดพเดฒเต JOIN-เด•เตพ เดตเต‡เด—เดคเดฏเตเดณเตเดณเดคเตเด‚ เดธเดฌเตเด•เตเดตเดฑเดฟเด•เตพ เดตเต‡เด—เดคเตเดคเดฟเดฒเตเดณเตเดณเดคเตเดฎเดพเดฃเต, เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต && เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ.

เด‡เดคเตŠเดฐเต เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. เด’เดฐเต เดชเดพเดฑเตเดฑเต‡เดฃเดฟเดจเดพเดฏเดฟ เดคเดฟเดฐเดฏเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ URL-เด•เดณเตเดŸเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดชเดŸเตเดŸเดฟเด• เดฎเตเดดเตเดตเตป เดคเดฟเดฐเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดžเด™เตเด™เตพเด•เตเด•เต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด•เดตเดฒเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. URL เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพเด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดคเดฟเดฐเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด‡เดต เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เตเดจเตเดจ เดเดกเดฟเด•เตพ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต urls.

เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดตเดดเดฟเดฏเดฟเตฝ

&& เดฐเดฃเตเดŸเต เดธเต†เดฑเตเดฑเตเด•เดณเตเด‚ เดตเดฒเตเดคเดพเดฏเดคเดฟเดจเดพเตฝ เดชเดคเตเด•เตเด•เต†. เดžเดพเตป เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดšเตเดšเดพเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดคเดพเดฐเดคเดฎเตเดฏเต‡เดจ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด‚ urls เด“เตบ { "http://google.com/", "http://wingify.com/" }.

เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† Postgres-เตฝ เดธเต†เดฑเตเดฑเต เด‡เดจเตเดฑเตผเดธเต†เด•เตเดทเตป เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เดตเดดเดฟ เดžเดพเตป เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟ &&, เดชเด•เตเดทเต‡ เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดตเดฟเดœเดฏเดฎเดฟเดฒเตเดฒเดพเดคเต†.

เด…เดตเดธเดพเดจเด‚, เด’เดฑเตเดฑเดชเตเดชเต†เดŸเดฒเดฟเตฝ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต: เดŽเดจเดฟเด•เตเด•เต เดŽเดฒเตเดฒเดพเด‚ เดคเดฐเต‚ urls URL เดชเดพเดฑเตเดฑเต‡เดฃเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจ เดตเดฐเดฟเด•เตพ. เด…เดงเดฟเด• เดตเตเดฏเดตเดธเตเดฅเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เด…เดคเต เด‡เดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ - 

SELECT urls.url
FROM 
	acc_{account_id}.urls as urls,
	(SELECT unnest(recording_data.urls) AS id) AS unrolled_urls
WHERE
	urls.id = unrolled_urls.id AND
	urls.url  ILIKE  '%jobs%'

เดชเด•เดฐเด‚ JOIN เดตเดพเด•เตเดฏเด˜เดŸเดจ เดžเดพเตป เด’เดฐเต เดธเดฌเตเด•เตเดตเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต recording_data.urls เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดตเตเดฏเดตเดธเตเดฅ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดคเดฐเดคเตเดคเดฟเตฝ เด…เดฑเต‡ WHERE.

เด‡เดตเดฟเดŸเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด•เดพเดฐเตเดฏเด‚ เด…เดคเดพเดฃเต && เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŽเตปเดŸเตเดฐเดฟเดฏเดฟเตฝ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจ URL เด‰เดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพ เด…เตฝเดชเตเดชเด‚ เด•เดฃเตเดฃเดŸเดšเตเดšเดพเตฝ, เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด’เดฐเต เด…เดฑเต‡เดฏเตเดŸเต† (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดตเดฐเดฟเด•เตพ) เดฎเต‚เดฒเด•เด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เดจเต€เด™เตเด™เตเดจเตเดจเดคเตเด‚ เด’เดฐเต เดตเตเดฏเดตเดธเตเดฅ (เดชเตŠเดฐเตเดคเตเดคเด‚) เดชเดพเดฒเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เด’เดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด“เตผเดฎเตเดฎเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต‡? เด…เดคเต†, EXISTS.

เดฎเตเดคเตฝ recording_data.urls เดธเดฌเตเด•เตเดตเดฑเดฟ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดจเดฟเดจเตเดจเต เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เดพเด‚, เด‡เดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดจเดฎเตเดฎเตเดŸเต† เดชเดดเดฏ เดธเตเดนเตƒเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เดพเด‚ EXISTS เด…เดคเต เด•เตŠเดฃเตเดŸเต เดธเดฌเตเด•เตเดตเดฑเดฟ เดชเตŠเดคเดฟเดฏเตเด•.

เดŽเดฒเตเดฒเดพเด‚ เด’เดฐเตเดฎเดฟเดšเตเดšเต เดšเต‡เตผเดคเตเดคเดพเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด…เดจเตเดคเดฟเดฎ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดค เดšเต‹เดฆเตเดฏเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚:

SELECT 
    count(*) 
FROM 
    acc_{account_id}.urls as recordings_urls, 
    acc_{account_id}.recording_data as recording_data, 
    acc_{account_id}.sessions as sessions 
WHERE 
    recording_data.usp_id = sessions.usp_id 
    AND  (  1 = 1  )  
    AND sessions.referrer_id = recordings_urls.id 
    AND r_time > to_timestamp(1542585600) 
    AND r_time < to_timestamp(1545177599) 
    AND recording_data.duration >=5 
    AND recording_data.num_of_pages > 0
    AND EXISTS(
        SELECT urls.url
        FROM 
            acc_{account_id}.urls as urls,
            (SELECT unnest(urls) AS rec_url_id FROM acc_{account_id}.recording_data) 
            AS unrolled_urls
        WHERE
            urls.id = unrolled_urls.rec_url_id AND
            urls.url  ILIKE  '%enterprise_customer.com/jobs%'
    );

เด’เดชเตเดชเด‚ เด…เดตเดธเดพเดจ เดฒเต€เดกเต เดธเดฎเดฏเดตเตเด‚ Time: 1898.717 ms เด†เด˜เต‹เดทเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเต‹?!?

เด…เดคเตเดฐ เดตเต‡เด—เดคเตเดคเดฟเดฒเดฒเตเดฒ! เด†เดฆเตเดฏเด‚ เดจเดฟเด™เตเด™เตพ เด•เตƒเดคเตเดฏเดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดŽเดจเดฟเด•เตเด•เต เด…เด™เตเด™เต‡เดฏเดฑเตเดฑเด‚ เดธเด‚เดถเดฏเดฎเตเดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต EXISTS เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดจเต‡เดฐเดคเตเดคเต† เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดพเตป เดฒเต‹เดœเดฟเด•เต เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเดพเตฝ. เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดชเดฟเดถเด•เต เดžเด™เตเด™เตพ เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เดจเตเดจเต เดžเด™เตเด™เตพเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚.

เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเดฐเต€เด•เตเดทเดฃเด‚ เด“เดŸเตเด•เดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต count(*) เดจเดฟเดฐเดตเดงเดฟ เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเดพเดฑเตเดฑเดพ เดธเต†เดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เดตเต‡เด—เดค เด•เตเดฑเดžเตเดžเดคเตเด‚ เดตเต‡เด—เดคเดฏเตเดณเตเดณเดคเตเดฎเดพเดฏ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเดฟเตฝ. เดคเตเดŸเตผเดจเตเดจเต, เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด‰เดชเดตเดฟเดญเดพเด—เดคเตเดคเดฟเดจเดพเดฏเดฟ, เดŽเดฒเตเดฒเดพ เดซเดฒเด™เตเด™เดณเตเด‚ เดถเดฐเดฟเดฏเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดธเตเดตเดฎเต‡เดงเดฏเดพ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต.

เดŽเดฒเตเดฒเดพ เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตเด‚ เดธเตเดฅเดฟเดฐเดฎเดพเดฏเดฟ เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต เดซเดฒเด™เตเด™เตพ เดจเตฝเด•เดฟ. เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเด•เตเด•เดฟ!

เดชเด เดฟเดšเตเดš เดชเดพเด เด™เตเด™เตพ

เดˆ เด•เดฅเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเตเดชเดพเดŸเต เดชเดพเด เด™เตเด™เตพ เดชเด เดฟเด•เตเด•เดพเดจเตเดฃเตเดŸเต:

  1. เด•เตเดตเดฑเดฟ เดชเตเดฒเดพเดจเตเด•เตพ เดฎเตเดดเตเดตเตป เด•เดฅเดฏเตเด‚ เดชเดฑเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด…เดตเดฏเตเด•เตเด•เต เดธเต‚เดšเดจเด•เตพ เดจเตฝเด•เดพเตป เด•เดดเดฟเดฏเตเด‚
  2. เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดคเดฟเด•เตพ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดฏเดฅเดพเตผเดคเตเดฅ เดชเตเดฐเดคเดฟเด•เดณเดฒเตเดฒ
  3. เดคเดŸเดธเตเดธเด™เตเด™เดณเต† เด’เดฑเตเดฑเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเตเดณเตเดณ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดคเด•เตผเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚
  4. เดŽเดฒเตเดฒเดพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด•เดณเตเด‚ เดชเตเดฐเด•เตƒเดคเดฟเดฏเดฟเตฝ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดตเดฏเดฒเตเดฒ
  5. เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• EXIST, เดธเดพเดงเตเดฏเดฎเดพเด•เตเดจเตเดจเดฟเดŸเดคเตเดคเต, เด‰เตฝเดชเตเดชเดพเดฆเดจเด•เตเดทเดฎเดคเดฏเดฟเตฝ เดจเดพเดŸเด•เต€เดฏเดฎเดพเดฏ เดตเตผเดฆเตเดงเดจเดตเดฟเดจเต เด‡เดŸเดฏเดพเด•เตเด•เตเด‚

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดžเด™เตเด™เตพ ~24 เดฎเดฟเดจเดฟเดฑเตเดฑเต เดฎเตเดคเตฝ 2 เดธเต†เด•เตเด•เตปเดกเต เดตเดฐเต†เดฏเตเดณเตเดณ เด’เดฐเต เด…เดจเตเดตเต‡เดทเดฃ เดธเดฎเดฏเด‚ เดชเต‹เดฏเดฟ - เดตเดณเดฐเต† เด—เดฃเตเดฏเดฎเดพเดฏ เดชเตเดฐเด•เดŸเดจ เดตเตผเดฆเตเดงเดจเดตเต! เดˆ เดฒเต‡เด–เดจเด‚ เดตเดฒเตเดคเดพเดฏเดฟ เดตเดจเตเดจเต†เด™เตเด•เดฟเดฒเตเด‚, เดžเด™เตเด™เตพ เดจเดŸเดคเตเดคเดฟเดฏ เดŽเดฒเตเดฒเดพ เดชเดฐเต€เด•เตเดทเดฃเด™เตเด™เดณเตเด‚ เด’เดฐเต เดฆเดฟเดตเดธเด‚ เด•เตŠเดฃเตเดŸเต เดธเด‚เดญเดตเดฟเดšเตเดšเต, เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเด‚ เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เดฟเดจเตเด‚ 1,5 เดฎเตเดคเตฝ 2 เดฎเดฃเดฟเด•เตเด•เต‚เตผ เดตเดฐเต† เดŽเดŸเตเดคเตเดคเดคเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเต.

SQL เด’เดฐเต เด…เดคเตเดญเตเดคเด•เดฐเดฎเดพเดฏ เดญเดพเดทเดฏเดพเดฃเต, เดจเดฟเด™เตเด™เตพ เด…เดคเดฟเดจเต† เดญเดฏเดชเตเดชเต†เดŸเต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด…เดคเต เดชเด เดฟเด•เตเด•เดพเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•. เดŽเดธเตโ€Œเด•เตเดฏเตเดŽเตฝ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เตเดตเดฑเดฟ เดชเตเดฒเดพเดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เตปเดกเด•เตโ€Œเดธเตเด•เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดจเดฟเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ เดŽเดจเตเดจเดฟเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฒเตเดฒ เดงเดพเดฐเดฃเดฏเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดฟเดœเดฏเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเดฎเต€เดชเดจเด™เตเด™เตพ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเด•เดฏเตเด‚ เดชเตเดฐเดถเตโ€Œเดจเดคเตเดคเต† เดธเดพเดตเดงเดพเดจเด‚ เดคเด•เตผเด•เตเด•เตเด•เดฏเตเด‚ เดคเดŸเดธเตเดธเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด’เดฐเตเดชเต‹เดฒเต† เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.

เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เดซเดฒเด™เตเด™เตพ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดจเดฒเตเดฒ เดญเดพเด—เด‚ เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฏ, เดฆเตƒเดถเตเดฏเดฎเดพเดฏ เดตเต‡เด—เดค เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฒเดพเดฃเต - เดฎเตเดฎเตเดชเต เดฒเต‹เดกเต เดชเต‹เดฒเตเด‚ เดšเต†เดฏเตเดฏเดพเดคเดฟเดฐเตเดจเตเดจ เด’เดฐเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เด‡เดชเตเดชเต‹เตพ เดเดคเดพเดฃเตเดŸเต เดคเตฝเด•เตเดทเดฃเด‚ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดชเตเดฐเดคเตเดฏเต‡เด• เดจเดจเตเดฆเดฟ เดŽเดจเตเดฑเต† เดธเด–เดพเด•เตเด•เตพ เด†เดฆเดฟเดคเตเดฏ เดฎเดฟเดถเตเดฐเดฏเตเดŸเต† เด•เตฝเดชเตเดชเดจเดชเตเดฐเด•เดพเดฐเด‚เด†เดฆเดฟเดคเตเดฏ เด—เต—เดฐเต ะธ เดตเดฐเตเตบ เดฎเตฝเดนเต‹เดคเตเดฐ เดฎเดธเตเดคเดฟเดทเตเด•เดชเตเดฐเด•เตเดทเต‹เดญเดคเตเดคเดฟเดจเตเด‚ เดฆเดฟเดจเด•เตผ เดชเดพเดฃเตเดกเดฟเตผ เดžเด™เตเด™เดณเตเดŸเต† เด…เดตเดธเดพเดจ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เด’เดฐเต เดชเตเดฐเดงเดพเดจ เดชเดฟเดถเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด…เดคเดฟเดจเต‹เดŸเต เดตเดฟเดŸเดชเดฑเดฏเตเด‚!

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•