เช เช เชญเซเชฏเชพเชธเชฎเชพเช, เชนเซเช เช เชเซเชตเชพ เชฎเชพเชเชเชคเซ เชนเชคเซ เชเซ PostgreSQL เชจเซ เชฌเชฆเชฒเซ ClickHouse เชกเซเชเชพ เชธเซเชคเซเชฐเซเชคเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชฏเชพ เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเซเชงเชพเชฐเชฃเชพเช เชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชถเชเชพเชฏ. เชเซเชฒเชฟเชเชนเชพเชเชธเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฅเซ เชฎเชจเซ เชเซ เชเชคเซเชชเชพเชฆเชเชคเชพ เชฒเชพเชญเซ เชฎเชณเซ เชเซ เชคเซ เชนเซเช เชเชพเชฃเซเช เชเซเช. เชเซ เชนเซเช เชซเซเชฐเซเชจ เชกเซเชเชพ เชฐเซเชชเชฐ (FDW) เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ PostgreSQL เชฎเชพเชเชฅเซ ClickHouse เชจเซ เชเชเซเชธเซเชธ เชเชฐเซเช เชคเซ เชถเซเช เช เชฒเชพเชญเซ เชเชพเชฒเซ เชฐเชนเซเชถเซ?
เช เชญเซเชฏเชพเชธ เชเชฐเซเชฒ เชกเซเชเชพเชฌเซเช เชชเชฐเซเชฏเชพเชตเชฐเชฃเซ PostgreSQL v11, clickhousedb_fdw เช เชจเซ ClickHouse เชกเซเชเชพเชฌเซเช เชเซ. เชเชเชฐเซ, PostgreSQL v11 เชฅเซ เช เชฎเซ เช เชฎเชพเชฐเชพ clickhousedb_fdw เชฆเซเชตเชพเชฐเชพ ClickHouse เชกเซเชเชพเชฌเซเช เชชเชฐ เชฐเซเช เชเชฐเชพเชฏเซเชฒ เชตเชฟเชตเชฟเชง SQL เชเซเชตเซเชฐเซเช เชเชฒเชพเชตเซเชถเซเช. เช เชฎเซ เชชเชเซ เชเซเชเชถเซเช เชเซ FDW เชจเซเช เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซเชณ PostgreSQL เช เชจเซ เชฎเซเชณ เชเซเชฒเชฟเชเชนเชพเชเชธเชฎเชพเช เชเชพเชฒเชคเซ เชธเชฎเชพเชจ เชเซเชตเซเชฐเซเช เชธเชพเชฅเซ เชเซเชตเซ เชฐเซเชคเซ เชธเชฐเชเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชเซเชฒเชฟเชเชนเชพเชเชธ เชกเซเชเชพเชฌเซเช
เชเซเชฒเชฟเชเชนเชพเชเชธ เช เชเชชเชจ เชธเซเชฐเซเชธ เชเซเชฒเชฎเชฐ เชกเซเชเชพเชฌเซเช เชฎเซเชจเซเชเชฎเซเชจเซเช เชธเชฟเชธเซเชเชฎ เชเซ เชเซ เชชเชฐเชเชชเชฐเชพเชเชค เชกเซเชเชพเชฌเซเช เช เชญเชฟเชเชฎเซ เชเชฐเชคเชพเช 100-1000 เชเชฃเซ เชเชกเชชเซ เชเชพเชฎเชเซเชฐเซ เชนเชพเชเชธเชฒ เชเชฐเซ เชถเชเซ เชเซ, เชเซ เชเช เชธเซเชเชจเซเชก เชเชฐเชคเชพเช เชเชเชพ เชธเชฎเชฏเชฎเชพเช เชเช เช เชฌเช เชชเชเชเซเชคเชฟเช เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพเชฎเชพเช เชธเชเซเชทเชฎ เชเซ.
Clickhousedb_fdw
clickhousedb_fdw - เชเซเชฒเชฟเชเชนเชพเชเชธ เชกเซเชเชพเชฌเซเช เชฎเชพเชเซ เชฌเชพเชนเซเชฏ เชกเซเชเชพ เชฐเซเชชเชฐ, เช
เชฅเชตเชพ FDW, เชชเชฐเชเซเชจเชพเชจเซ เชเช เชเชชเชจ เชธเซเชฐเซเชธ เชชเซเชฐเซเชเซเชเซเช เชเซ.
เชคเชฎเซ เชเซเชถเซ เชคเซเชฎ, เช ClickHouse เชฎเชพเชเซ FDW เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ เชเซ PostgreSQL v11 เชธเชฐเซเชตเชฐเชฎเชพเชเชฅเซ ClickHouse เชกเซเชเชพเชฌเซเชเชฎเชพเชเชฅเซ SELECT, เช เชจเซ INSERT INTO เชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
FDW เช เชฆเซเชฏเชคเชจ เชธเซเชตเชฟเชงเชพเชเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ เชเซเชฎ เชเซ เชเชเซเชฐเซเชเซเช เช เชจเซ เชเซเชกเชพเช. เช เชธเชเชธเชพเชงเชจ-เชธเชเชจ เชเชพเชฎเชเซเชฐเซ เชฎเชพเชเซ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐเชจเชพ เชธเชเชธเชพเชงเชจเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชชเซเชฐเชญเชพเชตเชจเซ เชจเซเชเชงเชชเชพเชคเซเชฐ เชฐเซเชคเซ เชธเซเชงเชพเชฐเซ เชเซ.
เชฌเซเชจเซเชเชฎเชพเชฐเซเช เชชเชฐเซเชฏเชพเชตเชฐเชฃ
- เชธเซเชชเชฐเชฎเชพเชเชเซเชฐเซ เชธเชฐเซเชตเชฐ:
- Intelยฎ Xeonยฎ CPU E5-2683 v3 @ 2.00GHz
- 2 เชธเซเชเซเชเซเชธ / 28 เชเซเชฐเซ / 56 เชฅเซเชฐเซเชกเซ
- เชฎเซเชฎเชฐเซ: 256 เชเซเชฌเซ เชฐเซเชฎ
- เชธเชเชเซเชฐเชน: Samsung SM863 1.9TB Enterprise SSD
- เชซเชพเชเชฒเชธเชฟเชธเซเชเชฎ: ext4/xfs
- OS: Linux smblade01 4.15.0-42-generic #45~16.04.1-Ubuntu
- เชชเซเชธเซเชเชเซเชฐเซเชเชธเชเซเชฏเซเชเชฒ: เชธเชเชธเซเชเชฐเชฃ 11
เชฌเซเชจเซเชเชฎเชพเชฐเซเช เชชเชฐเซเชเซเชทเชฃเซ
เช เชชเชฐเซเชเซเชทเชฃ เชฎเชพเชเซ เชเซเชเชฒเชพเช เชฎเชถเซเชจ-เชเชจเชฐเซเชเซเชก เชกเซเชเชพ เชธเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชฌเชฆเชฒเซ, เช
เชฎเซ 1987 เชฅเซ 2018 เชธเซเชงเซเชจเชพ "เชธเชฎเชฏเชจเซ เชเชพเชฃ เชเชฐเซเชฒ เชเชชเชฐเซเชเชฐ เชธเชฎเชฏ เชฆเซเชตเชพเชฐเชพ เชเชคเซเชชเชพเชฆเชเชคเชพ" เชกเซเชเชพเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ. เชคเชฎเซ เชกเซเชเชพ เชเชเซเชธเซเชธ เชเชฐเซ เชถเชเซ เชเซ
เชกเซเชเชพเชฌเซเชเชจเซเช เชเชฆ 85 GB เชเซ, เชเซ 109 เชเซเชฒเชฎเชจเซเช เชเช เชเซเชฌเชฒ เชชเซเชฐเซเช เชชเชพเชกเซ เชเซ.
เชฌเซเชจเซเชเชฎเชพเชฐเซเช เชเซเชตเซเชฐเซเช
เชเซเชฒเชฟเชเชนเชพเชเชธ, clickhousedb_fdw เช เชจเซ PostgreSQL เชจเซ เชธเชฐเชเชพเชฎเชฃเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชฎเซเช เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชงเซเชฒเซ เชเซเชตเซเชฐเซเช เช เชนเซเช เชเซ.
Q#
เชเซเชตเซเชฐเซ เชเชเซเชฐเซเชเซเชเซเชธ เช
เชจเซ เชเซเชฐเซเชช เชฆเซเชตเชพเชฐเชพ เชธเชฎเชพเชตเซ เชเซ
Q1
เช
เช เชตเชพเชกเชฟเชฏเซ เชฆเชฟเชตเชธ เชชเชธเชเชฆ เชเชฐเซ, เชเชจเชเชพเชเชฎเชฅเซ c เชคเชฐเซเชเซ เชเชฃเซ (*) เชเซเชฏเชพเช เชตเชฐเซเชท >= 2000 เช
เชจเซ เชตเชฐเซเชท <= 2008 เชเซเชฐเซเชช เชฌเชพเชฏ เชกเซเชเชซ เชตเซเชเชจเชพ เชเซเชฐเชฎเชฎเชพเช c DESC เชฆเซเชตเชพเชฐเชพ;
Q2
เช
เช เชตเชพเชกเชฟเชฏเซ เชฆเชฟเชตเชธ เชชเชธเชเชฆ เชเชฐเซ, เชเชจเชเชพเชเชฎเชฅเซ c เชคเชฐเซเชเซ เชเชฃเซ (*) เชเซเชฏเชพเช DepDelay>10 เช
เชจเซ เชตเชฐเซเชท >= 2000 เช
เชจเซ เชตเชฐเซเชท <= 2008 เชเซเชฐเซเชช เชฌเชพเชฏ เชกเซเชเชซ เชตเซเช เชเชฐเซเชกเชฐ c DESC เชฆเซเชตเชพเชฐเชพ;
Q3
เชเชฐเชฟเชเชฟเชจ เชชเชธเชเชฆ เชเชฐเซ, เชเชจเชเชพเชเชฎเชฅเซ เชเชฃเชคเชฐเซ เชเชฐเซ (*) เชเซเชฏเชพเช DepDelay>10 เช
เชจเซ เชตเชฐเซเชท >= 2000 เช
เชจเซ เชตเชฐเซเชท <= 2008 เชเซเชฐเซเชช เชเชฐเชฟเชเชฟเชจ เชเชฐเซเชกเชฐ C DESC LIMIT 10 เชฆเซเชตเชพเชฐเชพ;
Q4
เชตเชพเชนเช เชชเชธเชเชฆ เชเชฐเซ, เชเชฃเชคเชฐเซ() เชเชจเชเชพเชเชฎเชฅเซ เชเซเชฏเชพเช เชตเชฟเชฒเชเชฌ> 10 เช
เชจเซ เชตเชฐเซเชท = 2007 เชเซเชฅ เชตเชพเชนเช เชฆเซเชตเชพเชฐเชพ เชเชฃเชคเชฐเซ เชฆเซเชตเชพเชฐเชพ เชเชฐเซเชกเชฐ() DESC;
Q5
เชชเชธเชเชฆ เชเชฐเซ a.เชตเชพเชนเช, c, c2, c1000/c2 FROM c3 เชคเชฐเซเชเซ ( เชเซเชฐเชฟเชฏเชฐ เชชเชธเชเชฆ เชเชฐเซ, เชเชฃเชคเชฐเซ () เชเชจเชเชพเชเชฎเชฅเซ เชเซเชฏเชพเช เชตเชฟเชฒเชเชฌ> 10 เช
เชจเซ เชตเชฐเซเชท = 2007 เชตเชพเชนเช เชฆเซเชตเชพเชฐเชพ เชเซเชฅ C2 DESC เชฆเซเชตเชพเชฐเชพ;
Q6
เชชเชธเชเชฆ เชเชฐเซ a.เชตเชพเชนเช, c, c2, c1000/c2 FROM c3 เชคเชฐเซเชเซ ( เชเซเชฐเชฟเชฏเชฐ เชชเชธเชเชฆ เชเชฐเซ, เชเชฃเชคเชฐเซ () เชเชจเชเชพเชเชฎเชฅเซ c เชคเชฐเซเชเซ เชเซเชฏเชพเช เชตเชฟเชฒเชเชฌ> 10 เช
เชจเซ เชตเชฐเซเชท >= 2000 เช
เชจเซ เชตเชฐเซเชท <= เชตเชพเชนเช เชฆเซเชตเชพเชฐเชพ 2008 เชเซเชฅ) เชเช เชเชเชคเชฐเชฟเช เชเซเชกเชพเช ( เชเซเชฐเชฟเชฏเชฐ เชชเชธเชเชฆ เชเชฐเซ, เชเชฃเชคเชฐเซ เชเชฐเซ (*) เชเชจเชเชพเชเชฎเชฅเซ c2 เชคเชฐเซเชเซ เชเซเชฏเชพเช เชตเชฐเซเชท >= 2000 เช
เชจเซ เชตเชฐเซเชท <= 2008 เชเซเชฐเชฟเชฏเชฐ ) b เชชเชฐ a.Carrier=b.Carrier ORDER by c3 DESC;
Q7
เชตเชพเชนเช เชชเชธเชเชฆ เชเชฐเซ, เชธเชฐเซเชฐเชพเชถ(DepDelay) * 1000 AS c3 เชเชจเชเชพเชเชฎ เชเซเชฏเชพเช เชตเชฐเซเชท >= 2000 เช
เชจเซ เชตเชฐเซเชท <= 2008 เชเซเชฐเซเชช เชฌเชพเชฏ เชเซเชฐเชฟเชฏเชฐ;
Q8
เชตเชฐเซเชท เชชเชธเชเชฆ เชเชฐเซ, เชธเชฐเซเชฐเชพเชถ(DepDelay) เชเชจเชเชพเชเชฎเชฅเซ เชเซเชฐเซเชช เชฌเชพเชฏ เชตเชฐเซเชท;
Q9
เชตเชฐเซเชท เชชเชธเชเชฆ เชเชฐเซ, เชตเชฐเซเชท เชฆเซเชตเชพเชฐเชพ เชเชจเชเชพเชเชฎ เชเซเชฅเชฎเชพเชเชฅเซ c1 เชคเชฐเซเชเซ เชเชฃเซ (*);
Q10
เชธเชฐเซเชฐเชพเชถ (cnt) เชฎเชพเชเชฅเซ เชชเชธเชเชฆ เชเชฐเซ (เชตเชฐเซเชท, เชฎเชนเชฟเชจเซ, เชเชฃเชคเชฐเซ (*) เชเชจเชเชพเชเชฎเชฅเซ cnt เชคเชฐเซเชเซ เชชเชธเชเชฆ เชเชฐเซ เชเซเชฏเชพเช DepDel15=1 เชตเชฐเซเชท, เชฎเชนเชฟเชจเซ เชฆเซเชตเชพเชฐเชพ เชเซเชฅ) a;
Q11
เชฎเชพเชเชฅเซ เชธเชฐเซเชฐเชพเชถ(c1) เชชเชธเชเชฆ เชเชฐเซ (เชตเชฐเซเชท,เชฎเชนเชฟเชจเซ,เชเชฃเชคเชฐเซ(*) เชคเชฐเซเชเซ c1 เชคเชฐเซเชเซ เชเชจเชเชพเชเชฎ เชเซเชฅเชฎเชพเชเชฅเซ เชตเชฐเซเชท,เชฎเชนเชฟเชจเชพ เชฆเซเชตเชพเชฐเชพ เชชเชธเชเชฆ เชเชฐเซ) a;
Q12
OriginCityName, DestCityName, เชเชพเชเชจเซเช(*) เชคเชฐเซเชเซ เชชเชธเชเชฆ เชเชฐเซ เชเชจเชเชพเชเชฎเชฅเซ เชเซเชฐเซเชช เชฆเซเชตเชพเชฐเชพ OriginCityName, DestCityName เชเชฐเซเชกเชฐ เชธเซ DESC เชฒเชฟเชฎเชฟเช 10 เชฆเซเชตเชพเชฐเชพ;
Q13
OriginCityName เชชเชธเชเชฆ เชเชฐเซ, C DESC LIMIT 10 เชฆเซเชตเชพเชฐเชพ เชเชฐเชฟเชเชฟเชจเชธเชฟเชเซเชจเชพเชฎ เชฆเซเชตเชพเชฐเชพ เชเชจเชเชพเชเชฎ เชเซเชฐเซเชช เชคเชฐเซเชเซ เชเชฃเชคเชฐเซ เชเชฐเซ
เชเซเชตเซเชฐเซ เชเซเชกเชพเช เชธเชฎเชพเชตเซ เชเซ
Q14
เชชเชธเชเชฆ เชเชฐเซ a.Year, c1/c2 FROM (เชตเชฐเซเชท เชชเชธเชเชฆ เชเชฐเซ, เชเชฃเชคเชฐเซ()เชเชจเชเชพเชเชฎเชฅเซ c1000 เชคเชฐเซเชเซ 1 เชเซเชฏเชพเช DepDelay>เชตเชฐเซเชท เชฆเซเชตเชพเชฐเชพ 10 เชเซเชฐเซเชช) เชเช เชเชเชคเชฐเชฟเช เชเซเชกเชพเช (เชตเชฐเซเชท เชชเชธเชเชฆ เชเชฐเซ, เชตเชฐเซเชท เชฆเซเชตเชพเชฐเชพ เชเชจเชเชพเชเชฎ เชเซเชฐเซเชชเชฎเชพเชเชฅเซ c2 เชคเชฐเซเชเซ เชเชฃเซ) b เชชเชฐ a.Year=b.Year ORDER BY a.Year;
Q15
เชชเชธเชเชฆ เชเชฐเซ a.โเชตเชฐเซเชทโ, c1/c2 FROM ( โเชตเชฐเซเชทโ เชชเชธเชเชฆ เชเชฐเซ, เชเชฃเชคเชฐเซ()เชซเซเชจเซเชเชพเชเชฎเชฅเซ c1000 เชคเชฐเซเชเซ 1 เชเซเชฏเชพเช โDepDelayโ>10 เชเซเชฐเซเชช เชฌเชพเชฏ โเชตเชฐเซเชทโ) เชเช เชเชเชคเชฐเชฟเช เชเซเชกเชพเช ("เชตเชฐเซเชท" เชชเชธเชเชฆ เชเชฐเซ, "เชตเชฐเซเชท" เชฆเซเชตเชพเชฐเชพ เชซเซเชจเซเชเชพเชเชฎ เชเซเชฐเซเชชเชฎเชพเชเชฅเซ c2 เชคเชฐเซเชเซ เชเชฃเซ (*) ) b เชชเชฐ a.โYearโ=b. "เชตเชฐเซเชท";
เชเซเชทเซเชเช-1: เชฌเซเชจเซเชเชฎเชพเชฐเซเชเชฎเชพเช เชตเชชเชฐเชพเชคเซ เชเซเชตเซเชฐเซ
เชเซเชตเซเชฐเซ เช เชฎเชฒ
เชเซเชฏเชพเชฐเซ เชตเชฟเชตเชฟเชง เชกเซเชเชพเชฌเซเช เชธเซเชเชฟเชเชเซเชธเชฎเชพเช เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชคเซเชฏเชพเชฐเซ เชฆเชฐเซเช เชเซเชตเซเชฐเซเชจเชพเช เชชเชฐเชฟเชฃเชพเชฎเซ เช เชนเซเช เชเซ: เช เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพเช เชธเชพเชฅเซ เช เชจเซ เชตเชเชฐ PostgreSQL, เชฎเซเชณ ClickHouse เช เชจเซ clickhousedb_fdw. เชธเชฎเชฏ เชฎเชฟเชฒเชฟเชธเซเชเชเชกเชฎเชพเช เชฌเชคเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
Q#
เชชเซเชธเซเชเชเซเชฐเซ เชเชธเชเซเชฏเซเชเชฒ
PostgreSQL (เช
เชจเซเชเซเชฐเชฎเชฟเชค)
เชเซเชฒเซเชเชนเชพเชเชธ
clickhousedb_fdw
Q1
27920
19634
23
57
Q2
35124
17301
50
80
Q3
34046
15618
67
115
Q4
31632
7667
25
37
Q5
47220
8976
27
60
Q6
58233
24368
55
153
Q7
30566
13256
52
91
Q8
38309
60511
112
179
Q9
20674
37979
31
81
Q10
34990
20102
56
148
Q11
30489
51658
37
155
Q12
39357
33742
186
1333
Q13
29912
30709
101
384
Q14
54126
39913
124
1364212
Q15
97258
30211
245
259
เชเซเชทเซเชเช-1: เชฌเซเชจเซเชเชฎเชพเชฐเซเชเชฎเชพเช เชตเชชเชฐเชพเชคเซ เชเซเชตเซเชฐเซ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชฒเชพเชเซเชฒเซ เชธเชฎเชฏ
เชชเชฐเชฟเชฃเชพเชฎเซ เชเซเช
เชเชฒเซเช เชเซเชตเซเชฐเซ เชเชเซเชเซเชเซเชฏเซเชถเชจเชจเซ เชธเชฎเชฏ เชฎเชฟเชฒเซเชธเซเชเชจเซเชกเชฎเชพเช เชฌเชคเชพเชตเซ เชเซ, X เช เชเซเชท เชเชชเชฐเชจเชพ เชเซเชทเซเชเชเซเชฎเชพเชเชฅเซ เชเซเชตเซเชฐเซ เชจเชเชฌเชฐ เชฌเชคเชพเชตเซ เชเซ เช เชจเซ Y เช เชเซเชท เชฎเชฟเชฒเชฟเชธเซเชเชจเซเชกเชฎเชพเช เชเชเซเชเซเชเซเชฏเซเชถเชจเชจเซ เชธเชฎเชฏ เชฌเชคเชพเชตเซ เชเซ. Clickhousedb_fdw เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชชเซเชธเซเชเชเซเชฐเซเชธเชฎเชพเชเชฅเซ เชฎเซเชณเชตเซเชฒ เชเซเชฒเชฟเชเชนเชพเชเชธ เชชเชฐเชฟเชฃเชพเชฎเซ เช เชจเซ เชกเซเชเชพ เชฌเชคเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชเซเชทเซเชเชเชฎเชพเชเชฅเซ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ เชเซ PostgreSQL เช เชจเซ ClickHouse เชตเชเซเชเซ เชเชฃเซ เชฎเซเชเซ เชคเชซเชพเชตเชค เชเซ, เชชเชฐเชเชคเซ ClickHouse เช เชจเซ clickhousedb_fdw เชตเชเซเชเซ เชจเซเชฏเซเชจเชคเชฎ เชคเชซเชพเชตเชค เชเซ.
เช เชเซเชฐเชพเชซ ClickhouseDB เช เชจเซ clickhousedb_fdw เชตเชเซเชเซเชจเซ เชคเชซเชพเชตเชค เชฆเชฐเซเชถเชพเชตเซ เชเซ. เชฎเซเชเชพเชญเชพเชเชจเซ เชเซเชตเซเชฐเซเชเชฎเชพเช, FDW เชเชตเชฐเชนเซเชก เชเชเชฒเซเช เชเชเชเซเช เชจเชฅเซ เช เชจเซ Q12 เชธเชฟเชตเชพเชฏ เชญเชพเชเซเชฏเซ เช เชจเซเชเชงเชชเชพเชคเซเชฐ เชเซ. เช เชเซเชตเซเชฐเซ เชฎเชพเช เชเซเชกเชพเชตเชพ เช เชจเซ เชเชฐเซเชกเชฐ เชฌเชพเชฏ เชเชฒเชฎเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ. ORDER BY GROUP/BY เชเชฒเชฎเชจเซ เชเชพเชฐเชฃเซ, ORDER BY เชเซเชฒเชฟเชเชนเชพเชเชธ เชชเชฐ เชกเซเชฐเซเชช เชกเชพเชเชจ เชฅเชคเซ เชจเชฅเซ.
เชเซเชทเซเชเช 2 เชฎเชพเช เชเชชเชฃเซ Q12 เช เชจเซ Q13 เชชเซเชฐเชถเซเชจเซเชฎเชพเช เชธเชฎเชฏเชจเซ เชเชเชพเชณเซ เชเซเชเช เชเซเช. เชซเชฐเซเชฅเซ, เช ORDER BY เชเชฒเชฎเชจเซ เชเชพเชฐเชฃเซ เชฅเชพเชฏ เชเซ. เชเชจเซ เชชเซเชทเซเชเชฟ เชเชฐเชตเชพ เชฎเชพเชเซ, เชฎเซเช ORDER BY เชเชฒเชฎ เชธเชพเชฅเซ เช เชจเซ เชคเซเชจเชพ เชตเชเชฐ Q-14 เช เชจเซ Q-15 เชเซเชตเซเชฐเซเช เชเชฒเชพเชตเซ. ORDER BY เชเชฒเชฎ เชตเชฟเชจเชพ เชชเซเชฐเซเชฃ เชฅเชตเชพเชจเซ เชธเชฎเชฏ 259ms เชเซ เช เชจเซ ORDER BY เชเชฒเชฎ เชธเชพเชฅเซ เชคเซ 1364212 เชเซ. เช เชเซเชตเซเชฐเซ เชกเซเชฌเช เชเชฐเชตเชพ เชฎเชพเชเซ เชนเซเช เชฌเชเชจเซ เชเซเชตเซเชฐเซ เชธเชฎเชเชพเชตเซเช เชเซเช เช เชจเซ เช เชนเซเช เชธเชฎเชเซเชคเซเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เชเซ.
Q15: เชเชฒเชฎ เชฆเซเชตเชพเชฐเชพ เชเชฐเซเชกเชฐ เชตเชฟเชจเชพ
bm=# EXPLAIN VERBOSE SELECT a."Year", c1/c2
FROM (SELECT "Year", count(*)*1000 AS c1 FROM fontime WHERE "DepDelay" > 10 GROUP BY "Year") a
INNER JOIN(SELECT "Year", count(*) AS c2 FROM fontime GROUP BY "Year") b ON a."Year"=b."Year";
เชชเซเชฐเชถเซเชจ15: เชเชฒเชฎ เชฆเซเชตเชพเชฐเชพ เชเชฐเซเชกเชฐ เชตเชฟเชจเชพ เชชเซเชฐเชถเซเชจ
QUERY PLAN
Hash Join (cost=2250.00..128516.06 rows=50000000 width=12)
Output: fontime."Year", (((count(*) * 1000)) / b.c2)
Inner Unique: true Hash Cond: (fontime."Year" = b."Year")
-> Foreign Scan (cost=1.00..-1.00 rows=100000 width=12)
Output: fontime."Year", ((count(*) * 1000))
Relations: Aggregate on (fontime)
Remote SQL: SELECT "Year", (count(*) * 1000) FROM "default".ontime WHERE (("DepDelay" > 10)) GROUP BY "Year"
-> Hash (cost=999.00..999.00 rows=100000 width=12)
Output: b.c2, b."Year"
-> Subquery Scan on b (cost=1.00..999.00 rows=100000 width=12)
Output: b.c2, b."Year"
-> Foreign Scan (cost=1.00..-1.00 rows=100000 width=12)
Output: fontime_1."Year", (count(*))
Relations: Aggregate on (fontime)
Remote SQL: SELECT "Year", count(*) FROM "default".ontime GROUP BY "Year"(16 rows)
เชชเซเชฐเชถเซเชจ 14: เชเชฒเชฎ เชฆเซเชตเชพเชฐเชพ เชเชฐเซเชกเชฐ เชธเชพเชฅเซ เชชเซเชฐเชถเซเชจ
bm=# EXPLAIN VERBOSE SELECT a."Year", c1/c2 FROM(SELECT "Year", count(*)*1000 AS c1 FROM fontime WHERE "DepDelay" > 10 GROUP BY "Year") a
INNER JOIN(SELECT "Year", count(*) as c2 FROM fontime GROUP BY "Year") b ON a."Year"= b."Year"
ORDER BY a."Year";
เชชเซเชฐเชถเซเชจ 14: เชเชฒเชฎ เชฆเซเชตเชพเชฐเชพ เชเชฐเซเชกเชฐ เชธเชพเชฅเซ เชเซเชตเซเชฐเซ เชชเซเชฒเชพเชจ
QUERY PLAN
Merge Join (cost=2.00..628498.02 rows=50000000 width=12)
Output: fontime."Year", (((count(*) * 1000)) / (count(*)))
Inner Unique: true Merge Cond: (fontime."Year" = fontime_1."Year")
-> GroupAggregate (cost=1.00..499.01 rows=1 width=12)
Output: fontime."Year", (count(*) * 1000)
Group Key: fontime."Year"
-> Foreign Scan on public.fontime (cost=1.00..-1.00 rows=100000 width=4)
Remote SQL: SELECT "Year" FROM "default".ontime WHERE (("DepDelay" > 10))
ORDER BY "Year" ASC
-> GroupAggregate (cost=1.00..499.01 rows=1 width=12)
Output: fontime_1."Year", count(*) Group Key: fontime_1."Year"
-> Foreign Scan on public.fontime fontime_1 (cost=1.00..-1.00 rows=100000 width=4)
Remote SQL: SELECT "Year" FROM "default".ontime ORDER BY "Year" ASC(16 rows)
เชจเชฟเชทเซเชเชฐเซเชท
เช เชชเซเชฐเชฏเซเชเซเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เชฆเชฐเซเชถเชพเชตเซ เชเซ เชเซ เชเซเชฒเชฟเชเชนเชพเชเชธ เชเชฐเซเชเชฐ เชธเชพเชฐเซเช เชชเซเชฐเชฆเชฐเซเชถเชจ เชเชชเซ เชเซ, เช เชจเซ clickhousedb_fdw เชชเซเชธเซเชเชเซเชฐเซเชเชธเชเซเชฏเซเชเชฒเชฎเชพเชเชฅเซ เชเซเชฒเชฟเชเชนเชพเชเชธเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฒเชพเชญเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ. เชเซเชฏเชพเชฐเซ clickhousedb_fdw เชจเซ เชเชชเชฏเซเช เชเชฐเชคเซ เชตเชเชคเซ เชเซเชเชฒเชพเช เชเชตเชฐเชนเซเชก เชนเซเชฏ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเซ เชเซเชฒเชฟเชเชนเชพเชเชธ เชกเซเชเชพเชฌเซเช เชชเชฐ เชจเซเชเซเชตเชฒเซ เชเชฒเชพเชตเซเชจเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเซเชฒเชพ เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเชพเชฅเซ เชจเชเชฃเซเชฏ เช เชจเซ เชคเซเชฒเชจเชพเชคเซเชฎเช เชเซ. เช เชชเชฃ เชชเซเชทเซเชเชฟ เชเชฐเซ เชเซ เชเซ PostgreSQL เชฎเชพเช fdw เชเชคเซเชคเชฎ เชชเชฐเชฟเชฃเชพเชฎเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ.
เชเซเชฒเชฟเชเชนเชพเชเชธ เชฆเซเชตเชพเชฐเชพ เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชเซเช
PostgreSQL เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชฒเชฟเชเซเชฐเชพเชฎ เชเซเช
เชธเซเชฐเซเชธ: www.habr.com