เชเชฏเชพ เชกเชฟเชธเซเชฎเซเชฌเชฐเชฎเชพเช เชฎเชจเซ VWO เชธเชชเซเชฐเซเช เชเซเชฎ เชคเชฐเชซเชฅเซ เชเช เชฐเชธเชชเซเชฐเชฆ เชฌเช เชฐเชฟเชชเซเชฐเซเช เชฎเชณเซเชฏเซ เชนเชคเซ. เชฎเซเชเชพ เชเซเชฐเซเชชเซเชฐเซเช เชเซเชฒเชพเชฏเชจเซเช เชฎเชพเชเซ เชเชจเชพเชฒเชฟเชเชฟเชเซเชธ เชฐเชฟเชชเซเชฐเซเชเซเชธเชฎเชพเชเชฅเซ เชเช เชฎเชพเชเซ เชฒเซเชก เชฅเชตเชพเชจเซ เชธเชฎเชฏ เชชเซเชฐเชคเชฟเชฌเชเชงเชฟเชค เชฒเชพเชเชคเซ เชนเชคเซ. เช เชจเซ เช เชฎเชพเชฐเซ เชเชตเชพเชฌเชฆเชพเชฐเซเชจเซเช เชเซเชทเซเชคเซเชฐ เชนเซเชตเชพเชฅเซ, เชฎเซเช เชคเชฐเชค เช เชธเชฎเชธเซเชฏเชพเชจเชพ เชเชเซเชฒ เชชเชฐ เชงเซเชฏเชพเชจ เชเซเชจเซเชฆเซเชฐเชฟเชค เชเชฐเซเชฏเซเช.
เชชเซเชฐเชพเชเซเชคเชฟเชนเชพเชธเชฟเช
เชนเซเช เชเซเชจเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ เชฐเชนเซเชฏเซ เชเซเช เชคเซ เชธเซเชชเชทเซเช เชเชฐเชตเชพ เชฎเชพเชเซ, เชนเซเช เชคเชฎเชจเซ VWO เชตเชฟเชถเซ เชฅเซเชกเซเช เชเชนเซเชถ. เช เชเช เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชเซ เชเซเชจเซ เชฎเชฆเชฆเชฅเซ เชคเชฎเซ เชคเชฎเชพเชฐเซ เชตเซเชฌเชธเชพเชเชเซเชธ เชชเชฐ เชตเชฟเชตเชฟเชง เชฒเชเซเชทเชฟเชค เชเซเชเชฌเซเชถ เชถเชฐเซ เชเชฐเซ เชถเชเซ เชเซ: A/B เชชเซเชฐเชฏเซเชเซ เชเชฐเซ, เชฎเซเชฒเชพเชเชพเชคเซเช เช เชจเซ เชฐเซเชชเชพเชเชคเชฐเชฃเซเชจเซ เชเซเชฐเซ เช เชเชฐเซ, เชตเซเชเชพเชฃ เชซเชจเชฒเชจเซเช เชตเชฟเชถเซเชฒเซเชทเชฃ เชเชฐเซ, เชนเซเช เชจเชเชถเชพ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเซ เช เชจเซ เชฎเซเชฒเชพเชเชพเชค เชฐเซเชเซเชฐเซเชกเชฟเชเช เชเชฒเชพเชตเซ.
เชชเชฐเชเชคเซ เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชตเชฟเชถเซเชจเซ เชธเซเชฅเซ เชฎเชนเชคเซเชตเชจเซ เชตเชธเซเชคเซ เชฐเชฟเชชเซเชฐเซเชเชฟเชเช เชเซ. เชเชชเชฐเซเชเซเชค เชคเชฎเชพเชฎ เชเชพเชฐเซเชฏเซ เชเชเชฌเซเชเชพ เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒเชพ เชเซ. เช เชจเซ เชเซเชฐเซเชชเซเชฐเซเช เชเซเชฒเชพเชฏเชจเซเชเซเชธ เชฎเชพเชเซ, เชฎเชพเชนเชฟเชคเซเชจเซ เชตเชฟเชถเชพเชณ เชเชฅเซเชฅเซ เชเช เชถเชเซเชคเชฟเชถเชพเชณเซ เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชตเชฟเชจเชพ เชจเชเชพเชฎเซเช เชนเชถเซ เชเซ เชคเซเชจเซ เชตเชฟเชถเซเชฒเซเชทเชฃ เชธเซเชตเชฐเซเชชเชฎเชพเช เชฐเชเซ เชเชฐเซ เชเซ.
เชชเซเชฒเซเชเชซเซเชฐเซเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ, เชคเชฎเซ เชฎเซเชเชพ เชกเซเชเชพ เชธเซเช เชชเชฐ เชฐเซเชจเซเชกเชฎ เชเซเชตเซเชฐเซ เชเชฐเซ เชถเชเซ เชเซ. เช เชนเซเช เชเช เชธเชฐเชณ เชเชฆเชพเชนเชฐเชฃ เชเซ:
เชชเซเชทเซเช "abc.com" เชชเชฐเชจเซ เชฌเชงเซ เชเซเชฒเชฟเชเซเชธ เชฌเชคเชพเชตเซ เชฅเซ เชธเซเชงเซ เชเซ เชฒเซเชเซ เชฎเชพเชเซ Chrome เช เชฅเชตเชพ เชตเชชเชฐเชพเชฏเซเชฒ (เชฏเซเชฐเซเชชเชฎเชพเช เชนเชคเชพ เช เชจเซ iPhone เชจเซ เชเชชเชฏเซเช เชเชฐเชคเชพ เชนเชคเชพ)
เชฌเซเชฒเชฟเชฏเชจ เชเชชเชฐเซเชเชฐเซ เชชเชฐ เชงเซเชฏเชพเชจ เชเชชเซ. เชจเชฎเซเชจเชพเช เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ เชคเซเช เชฎเชจเชธเซเชตเซ เชฐเซเชคเซ เชเชเชฟเชฒ เชชเซเชฐเชถเซเชจเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชตเซเชฐเซ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชเซเชฒเชพเชฏเชจเซเช เชฎเชพเชเซ เชเชชเชฒเชฌเซเชง เชเซ.
เชงเซเชฎเซ เชตเชฟเชจเชเชคเซ
เชชเซเชฐเชถเซเชจเชฎเชพเช เชเซเชฒเชพเชฏเชเช เชเชเชเช เชเชตเซเช เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชฐเชนเซเชฏเซ เชนเชคเซ เชเซ เชเซ เชธเชพเชนเชเชฟเช เชฐเซเชคเซ เชเชกเชชเชฅเซ เชเชพเชฐเซเชฏ เชเชฐเซ:
เชฌเชงเชพ เชธเชคเซเชฐ เชฐเซเชเซเชฐเซเชกเชฟเชเชเซเชธ เชฌเชคเชพเชตเซ เชเซเชเชชเชฃ เชชเซเชทเซเช เชจเซ เชฎเซเชฒเชพเชเชพเชค เชฒเซเชจเชพเชฐเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชฎเชพเชเซ URL เชธเชพเชฅเซ เชเซเชฏเชพเช "/jobs" เชเซ
เช เชธเชพเชเช เชชเชฐ เชเช เชเชจ เชเซเชฐเชพเชซเชฟเช เชนเชคเซ เช เชจเซ เช เชฎเซ เชคเซเชจเชพ เชฎเชพเชเซ เชเช เชฎเชฟเชฒเชฟเชฏเชจเชฅเซ เชตเชงเซ เช เชจเชจเซเชฏ 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 ms เชเชเซเชเซเชเซเชฏเซเชถเชจ เชธเชฎเชฏ: 1431924.650 ms
เชเซเชตเซเชฐเซ 150 เชนเชเชพเชฐ เชชเชเชเซเชคเชฟเช เชเซเชฐเซเชฒ เชเชฐเซ. เชเซเชตเซเชฐเซ เชชเซเชฒเชพเชจเชฐเซ เชเซเชเชฒเซเช เชฐเชธเชชเซเชฐเชฆ เชตเชฟเชเชคเซ เชฆเชฐเซเชถเชพเชตเซ, เชชเชฐเชเชคเซ เชเซเช เชธเซเชชเชทเซเช เช เชกเชเชฃเซ เชจเชฅเซ.
เชเชพเชฒเซ เชตเชฟเชจเชเชคเซเชจเซ เชตเชงเซ เช
เชญเซเชฏเชพเชธ เชเชฐเซเช. เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เชคเซ เชเชฐเซ เชเซ JOIN
เชคเซเชฐเชฃ เชเซเชทเซเชเชเซ:
- เชธเชคเซเชฐเซ: เชธเชคเซเชฐ เชฎเชพเชนเชฟเชคเซ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ: เชฌเซเชฐเชพเชเชเชฐ, เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชเชจเซเช, เชฆเซเชถ, เชตเชเซเชฐเซ.
- เชฐเซเชเซเชฐเซเชกเชฟเชเช_เชกเซเชเชพ: เชฐเซเชเซเชฐเซเชก เชเชฐเซเชฒ URL, เชชเซเชทเซเช เซ, เชฎเซเชฒเชพเชเชพเชคเซเชจเซ เชธเชฎเชฏเชเชพเชณเซ
- 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
-ami เช
เชจเซ เชธเชฌเชเซเชตเซเชฐเซ เชชเซเชคเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชฐเซเชคเซ เชเชกเชชเซ เชเซ, เชชเชฐเชเชคเซ เชเชเชธเชพเชฅเซ เชญเชฏเชเชเชฐ เชฐเซเชคเซ เชงเซเชฎเซเช เชเซ?
- เชธเชฌเชเซเชตเซเชฐเซ 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[] )
เชเซเชจเซ เช
เชฐเซเชฅ เชเซ เชเซ เช
เชฎเซ เช
เชฎเชพเชฐเชพ URLs เชชเชฐ เชชเซเชเชฐเซเชจ เชถเซเชง เชเชฐเซเช เชเซเช, เชชเชเซ เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชธเซเชเซเชธ เชธเชพเชฅเซเชจเชพ เชคเชฎเชพเชฎ URL เชธเชพเชฅเซ เชเชเชคเชฐเชเซเชฆ เชถเซเชงเซเช เชเซเช. เช เชฅเซเชกเซเช เชเซเชเชเชตเชฃเชญเชฐเซเชฏเซเช เชเซ เชเชพเชฐเชฃ เชเซ เช
เชนเซเช "urls" เช เชฌเชงเชพ URLs เชงเชฐเชพเชตเชคเชพ เชเซเชทเซเชเชเชจเซ เชธเชเชฆเชฐเซเชญ เชจเชฅเซ, เชชเชฐเชเชคเซ เชเซเชทเซเชเชเชฎเชพเช "urls" เชเซเชฒเชฎเชจเซ เชธเชเชฆเชฐเซเชญ เชเชชเซ เชเซ. 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
-s เชเชกเชชเซ เชเซ เช
เชจเซ เชธเชฌเชเซเชตเซเชฐเซเช เชเชกเชชเซ เชเซ, เชฎเชพเชคเซเชฐ เชเช เช เชตเชธเซเชคเซ เชฌเชพเชเซ เชนเชคเซ &&
เชเชชเชฐเซเชเชฐ
เช เชฎเชพเชคเซเชฐ เชเช เชเซ เชเชชเชฐเซเชถเชจ เชเซ. เชชเซเชเชฐเซเชจ เชถเซเชงเชตเชพ เชฎเชพเชเซ เช
เชฎเชพเชฐเซ เชนเชเชฎเซเชถเชพ URL เชจเชพ เชธเชฎเชเซเชฐ เช
เชเชคเชฐเซเชเชค เชเซเชทเซเชเชเชจเซ เชถเซเชงเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เช
เชจเซ เช
เชฎเชพเชฐเซ เชนเชเชฎเซเชถเชพ เชเชเชคเชฐเชเซเชฆ เชถเซเชงเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เช
เชฎเซ เชธเซเชงเชพ URL เชฐเซเชเซเชฐเซเชกเซเชธ เชฆเซเชตเชพเชฐเชพ เชถเซเชงเซ เชถเชเชคเชพ เชจเชฅเซ, เชเชพเชฐเชฃ เชเซ เช เชซเชเซเชค ID เชจเซ เชเชฒเซเชฒเซเช เชเชฐเซ เชเซ urls
.
เชเชเซเชฒเชจเชพ เชฎเชพเชฐเซเช เชชเชฐ
&&
เชงเซเชฎเซเช เชเชพเชฐเชฃ เชเซ เชฌเชเชจเซ เชธเซเช เชตเชฟเชถเชพเชณ เชเซ. เชเซ เชนเซเช เชฌเชฆเชฒเซเชถ เชคเซ เชเชชเชฐเซเชถเชจ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช เชเชกเชชเซ เชฅเชถเซ urls
เชชเชฐ { "http://google.com/", "http://wingify.com/" }
.
เชฎเซเช เชเชชเชฏเซเช เชเชฐเซเชฏเชพ เชตเชฟเชจเชพ เชชเซเชธเซเชเชเซเชฐเซเชธเชฎเชพเช เชธเซเช เชเชจเซเชเชฐเชธเซเชเซเชถเชจ เชเชฐเชตเชพเชจเซ เชฐเซเชค เชถเซเชงเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเชฏเซเช &&
, เชชเชฐเชเชคเซ เชเชฃเซ เชธเชซเชณเชคเชพ เชตเชฟเชจเชพ.
เช
เชเชคเซ, เช
เชฎเซ เชซเชเซเชค เชเชเชฒเชคเชพเชฎเชพเช เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช: เชฎเชจเซ เชฌเชงเซเช เชเชชเซ 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(*)
เชฎเซเชเซ เชธเชเชเซเชฏเชพเชฎเชพเช เชตเชฟเชตเชฟเชง เชกเซเชเชพ เชธเซเช เชฎเชพเชเซ เชงเซเชฎเซ เช
เชจเซ เชเชกเชชเซ เชฌเชเชจเซ เชเซเชตเซเชฐเซเช เชชเชฐ. เชชเชเซ, เชกเซเชเชพเชจเชพ เชจเชพเชจเชพ เชธเชฌเชธเซเช เชฎเชพเชเซ, เชฎเซเช เชฎเซเชจเซเชฏเซเช
เชฒเซ เชเชเชพเชธเซเชฏเซเช เชเซ เชฌเชงเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เชธเชพเชเชพ เชนเชคเชพ.
เชฌเชงเชพ เชชเชฐเซเชเซเชทเชฃเซ เชธเชคเชค เชนเชเชพเชฐเชพเชคเซเชฎเช เชชเชฐเชฟเชฃเชพเชฎเซ เชเชชเซ เชเซ. เช เชฎเซ เชฌเชงเซเช เช เซเช เชเชฐเซเชฏเซเช!
เชชเชพเช เชถเซเชเซเชฏเชพ
เช เชตเชพเชฐเซเชคเชพเชฎเชพเชเชฅเซ เชเชฃเชพ เชชเชพเช เชถเซเชเชตเชพ เชเซเชตเชพ เชเซ:
- เชเซเชตเซเชฐเซ เชฏเซเชเชจเชพเช เชเชเซ เชตเชพเชฐเซเชคเชพ เชเชนเซเชคเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เชคเซเช เชธเชเชเซเชคเซ เชเชชเซ เชถเชเซ เชเซ
- เชฎเซเชเซเชฏ เชถเชเชเชพเชธเซเชชเชฆเซ เชนเชเชฎเซเชถเชพ เชตเชพเชธเซเชคเชตเชฟเช เชเซเชจเซเชเชพเชฐเซ เชนเซเชคเชพ เชจเชฅเซ
- เช เชตเชฐเซเชงเซเชจเซ เช เชฒเช เชเชฐเชตเชพ เชฎเชพเชเซ เชงเซเชฎเซ เชเซเชตเซเชฐเซเชเชจเซ เชคเซเชกเซ เชถเชเชพเชฏ เชเซ
- เชฌเชงเชพ เชเชชเซเชเชฟเชฎเชพเชเชเซเชถเชจ เชชเซเชฐเชเซเชคเชฟเชฎเชพเช เชเชเชพเชกเชพเชตเชพเชณเชพ เชจเชฅเซ
- เชเชชเชฏเซเช เชเชฐเซ
EXIST
, เชเซเชฏเชพเช เชถเชเซเชฏ เชนเซเชฏ, เชเชคเซเชชเชพเชฆเชเชคเชพเชฎเชพเช เชจเชพเชเซเชฏเชพเชคเซเชฎเช เชตเชงเชพเชฐเซ เชฅเช เชถเชเซ เชเซ
เชจเชฟเชทเซเชเชฐเซเชท
เช เชฎเซ ~24 เชฎเชฟเชจเชฟเชเชจเชพ เชเซเชตเซเชฐเซ เชธเชฎเชฏเชฅเซ 2 เชธเซเชเชจเซเชก เชธเซเชงเซ เชเชฏเชพ - เชจเซเชเชงเชชเชพเชคเซเชฐ เชเชพเชฎเชเซเชฐเซเชฎเชพเช เชจเซเชเชงเชชเชพเชคเซเชฐ เชตเชงเชพเชฐเซ! เชเซ เชเซ เช เชฒเซเช เชฎเซเชเซ เชฌเชนเชพเชฐ เชเชตเซเชฏเซ เชเซ, เช เชฎเซ เชเชฐเซเชฒเชพ เชคเชฎเชพเชฎ เชชเซเชฐเชฏเซเชเซ เชเช เช เชฆเชฟเชตเชธเชฎเชพเช เชฅเชฏเชพ เชเซ เช เชจเซ เชเชตเซ เช เชเชฆเชพเช เชเซ เชเซ เชคเซเชฎเชจเซ เชเชชเซเชเชฟเชฎเชพเชเชเซเชถเชจ เช เชจเซ เชชเชฐเซเชเซเชทเชฃ เชฎเชพเชเซ 1,5 เชฅเซ 2 เชเชฒเชพเช เชเซเชเชฒเซ เชธเชฎเชฏ เชฒเชพเชเซเชฏเซ เชเซ.
SQL เช เชเช เช เชฆเซเชญเซเชค เชญเชพเชทเชพ เชเซ เชเซ เชคเชฎเซ เชคเซเชจเชพเชฅเซ เชกเชฐเชคเชพ เชจเชฅเซ, เชชเชฐเชเชคเซ เชคเซเชจเซ เชถเซเชเชตเชพเชจเซ เช เชจเซ เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ. เชเชธเชเซเชฏเซเชเชฒ เชเซเชตเซเชฐเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชเซเชเชฟเชเซเชฏเซเช เชฅเชพเชฏ เชเซ, เชกเซเชเชพเชฌเซเช เชเซเชตเซ เชฐเซเชคเซ เชเซเชตเซเชฐเซ เชชเซเชฒเชพเชจ เชเชจเชฐเซเช เชเชฐเซ เชเซ, เชเชจเซเชกเซเชเซเชธ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฎ เชเชฐเซ เชเซ เช เชจเซ เชคเชฎเซ เชเซ เชกเซเชเชพ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเชพเช เชเซ เชคเซเชจเชพ เชเชฆเชจเซ เชธเชพเชฐเซ เชธเชฎเช เชฎเซเชณเชตเซเชจเซ, เชคเชฎเซ เชเซเชตเซเชฐเซเชเชจเซ เชเชชเซเชเชฟเชฎเชพเชเช เชเชฐเชตเชพเชฎเชพเช เชเซเชฌ เช เชธเชซเชณ เชฅเช เชถเชเซ เชเซ. เชเซ เชเซ, เชตเชฟเชตเชฟเชง เช เชญเชฟเชเชฎเซ เช เชเชฎเชพเชตเชตเชพเชจเซเช เชเชพเชฒเซ เชฐเชพเชเชตเซเช เช เชจเซ เช เชตเชฐเซเชงเซเชจเซ เชถเซเชงเซเชจเซ เชงเซเชฎเซ เชงเซเชฎเซ เชธเชฎเชธเซเชฏเชพเชจเซ เชคเซเชกเซ เชชเชพเชกเชตเซ เชคเซ เชเชเชฒเซเช เช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ.
เชเชจเชพ เชเซเชตเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เชนเชพเชเชธเชฒ เชเชฐเชตเชพ เชตเชฟเชถเซเชจเซ เชถเซเชฐเซเชทเซเช เชญเชพเช เช เชจเซเชเชงเชจเซเชฏ, เชฆเซเชถเซเชฏเชฎเชพเชจ เชเชคเชฟ เชธเซเชงเชพเชฐเชฃเชพ เชเซ - เชเซเชฏเชพเช เชเช เช เชนเซเชตเชพเชฒ เชเซ เช เชเชพเช เชฒเซเชก เชฅเชคเซ เชจ เชนเชคเซ เชคเซ เชนเชตเซ เชฒเชเชญเช เชคเชฐเชค เช เชฒเซเชก เชฅเชพเชฏ เชเซ.
เชจเซ เชเชพเชธ เชเชญเชพเชฐ เชฎเชพเชฐเชพ เชธเชพเชฅเซเช เชเชฆเชฟเชคเซเชฏ เชฎเชฟเชถเซเชฐเชพเชจเชพ เชเชฆเซเชถ เชชเชฐ, เชเชฆเชฟเชคเซเชฏ เชเซเชฐเซ ะธ
เชธเซเชฐเซเชธ: www.habr.com