เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชเชฐเซเชเชฟเชเซเชเซเชเชฐ, เช เชตเชฟเชถเซเชตเชจเซ เชฆเชฐเซเช เชตเชธเซเชคเซเชจเซ เชเซเชฎ, เชคเซเชจเชพ เชซเชพเชฏเชฆเชพ เช เชจเซ เชเซเชฐเชซเชพเชฏเชฆเชพ เชเซ. เชเซเชเชฒเซเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชคเซเชจเซ เชธเชพเชฅเซ เชธเชฐเชณ เชฌเชจเซ เชเซ, เช เชจเซเชฏ เชตเชงเซ เชฎเซเชถเซเชเซเชฒ. เช เชจเซ เชชเชฐเชฟเชตเชฐเซเชคเชจเชจเซ เชเชกเชช เช เชจเซ เชตเชงเซ เชธเชพเชฐเซ เชฎเชพเชชเชจเซเชฏเชคเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชฌเชฒเชฟเชฆเชพเชจ เชเชชเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชคเซเชฎเชพเชเชฅเซ เชเช เชตเชฟเชถเซเชฒเซเชทเชฃเชจเซ เชตเชงเชคเซ เชเชเชฟเชฒเชคเชพ เชเซ. เชเซ เชฎเซเชจเซเชฒเชฟเชฅเชฎเชพเช เชคเชฎเชพเชฎ เชเชชเชฐเซเชถเชจเชฒ เชเชจเชพเชฒเชฟเชเชฟเชเซเชธ เชเชธเชเซเชฏเซเชเชฒ เชเซเชตเซเชฐเซเชเชฎเชพเช เชตเชฟเชถเซเชฒเซเชทเชฃเชพเชคเซเชฎเช เชชเซเชฐเชคเชฟเชเซเชคเชฟเชฎเชพเช เชเชเชพเชกเซ เชถเชเชพเชฏ เชเซ, เชคเซ เชฎเชฒเซเชเชฟเชธเชฐเซเชตเชฟเชธ เชเชฐเซเชเชฟเชเซเชเซเชเชฐเชฎเชพเช เชฆเชฐเซเช เชธเซเชตเชพเชจเซ เชชเซเชคเชพเชจเซ เชกเซเชเชพเชฌเซเช เชนเซเชฏ เชเซ เช เชจเซ เชเชตเซเช เชฒเชพเชเซ เชเซ เชเซ เชเช เชเซเชตเซเชฐเซ เชเชฐเซ เชถเชเชพเชคเซ เชจเชฅเซ (เช เชฅเชตเชพ เชเชฆเชพเช เชคเซ เชฅเช เชถเชเซ เชเซ?). เช เชฎเซ เช เชฎเชพเชฐเซ เชเชเชชเชจเซเชฎเชพเช เชเชชเชฐเซเชถเชจเชฒ เชเชจเชฒเชฟเชเชฟเชเซเชธเชจเซ เชธเชฎเชธเซเชฏเชพเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชนเชฒ เชเชฐเซ เช เชจเซ เช เชฎเซ เช เชเชเซเชฒ เชธเชพเชฅเซ เชเซเชตเซ เชฐเซเชคเซ เชเซเชตเชตเชพเชจเซเช เชถเซเชเซเชฏเชพ เชคเซเชฎเชพเช เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชฒเซเชเซ เชฎเชพเชเซ - เชธเซเชตเชพเชเชค เชเซ.
เชฎเชพเชฐเซเช เชจเชพเชฎ เชชเชพเชตเซเชฒ เชถเชฟเชตเซเชถ เชเซ, เชกเซเชฎเชเซเชฒเชฟเชเชฎเชพเช เชนเซเช เชเช เชเซเชฎเชฎเชพเช เชเชพเชฎ เชเชฐเซเช เชเซเช เชเซ เชตเชฟเชถเซเชฒเซเชทเชฃเชพเชคเซเชฎเช เชกเซเชเชพ เชตเซเชฐเชนเชพเชเชธเชจเซ เชเชพเชณเชตเชฃเซ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ. เชชเชฐเชเชชเชฐเชพเชเชค เชฐเซเชคเซ, เช
เชฎเชพเชฐเซ เชชเซเชฐเชตเซเชคเซเชคเชฟเชเชจเซ เชกเซเชเชพ เชเชจเซเชเชฟเชจเชฟเชฏเชฐเชฟเชเช เชคเชฐเซเชเซ เชตเชฐเซเชเซเชเซเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชชเชฐเชเชคเซ, เชนเชเซเชเชคเชฎเชพเช, เชเชพเชฐเซเชฏเซเชจเซ เชถเซเชฐเซเชฃเซ เชเชฃเซ เชตเชฟเชถเชพเชณ เชเซ. เชกเซเชเชพ เชเชจเซเชเซเชจเซเชฏเชฐเซเชเช เชฎเชพเชเซ ETL/ELT เชธเซเชเชพเชจเซเชกเชฐเซเชก เชเซ, เชกเซเชเชพ เชตเชฟเชถเซเชฒเซเชทเชฃ เช
เชจเซ เชคเชฎเชพเชฐเชพ เชชเซเชคเชพเชจเชพ เชเซเชฒเซเชธเชจเชพ เชตเชฟเชเชพเชธ เชฎเชพเชเซ เชเซเชฒเซเชธเชจเซเช เชธเชฎเชฐเซเชฅเชจ เช
เชจเซ เช
เชจเซเชเซเชฒเชจ เชเซ. เชเชพเชธ เชเชฐเซเชจเซ, เชเชชเชฐเซเชถเชจเชฒ เชฐเชฟเชชเซเชฐเซเชเชฟเชเช เชฎเชพเชเซ, เช
เชฎเซ "เชกเซเชณ" เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช เชเซ เชเซ เช
เชฎเชพเชฐเซ เชชเชพเชธเซ เชเช เชฎเซเชจเซเชฒเชฟเชฅ เชเซ เช
เชจเซ เชตเชฟเชถเซเชฒเซเชทเชเซเชจเซ เชเช เชกเซเชเชพเชฌเซเช เชเชชเชตเชพเชจเซ เชเซ เชเซเชฎเชพเช เชคเซเชฎเชจเซ เชเชฐเซเชฐเซ เชคเชฎเชพเชฎ เชกเซเชเชพ เชนเชถเซ.
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เช เชฎเซ เชตเชฟเชตเชฟเชง เชตเชฟเชเชฒเซเชชเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชงเชพ. เชธเชเชชเซเชฐเซเชฃ เชธเซเชตเชฟเชงเชพเชฏเซเชเซเชค เชญเชเชกเชพเชฐ เชฌเชจเชพเชตเชตเซเช เชถเชเซเชฏ เชนเชคเซเช - เช เชฎเซ เชชเซเชฐเชฏเชพเชธ เชชเชฃ เชเชฐเซเชฏเซ, เชชเชฐเชเชคเซ, เชชเซเชฐเชฎเชพเชฃเชฟเชเชชเชฃเซ, เช เชฎเซ เชญเชเชกเชพเชฐ เชฌเชจเชพเชตเชตเชพเชจเซ เช เชจเซ เชคเซเชฎเชพเช เชซเซเชฐเชซเชพเชฐ เชเชฐเชตเชพเชจเซ เชงเซเชฎเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชธเชพเชฅเซ เชคเชฐเซเชเชฎเชพเช เชตเชพเชฐเชเชตเชพเชฐ เชฅเชคเชพ เชซเซเชฐเชซเชพเชฐเซเชจเซ เชเซเชกเชตเชพเชฎเชพเช เชธเชเซเชทเชฎ เชจ เชนเชคเชพ (เชเซ เชเซเช เชธเชซเชณ เชฅเชพเชฏ เชคเซ , เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช เชฒเชเซ เชเซ เชเซเชตเซ เชฐเซเชคเซ). เชตเชฟเชถเซเชฒเซเชทเชเซเชจเซ เชเชนเซเชตเซเช เชถเชเซเชฏ เชนเชคเซเช: "เชเชพเชฏเซเชธ, เช เชเชเชฐ เชถเซเชเซ เช เชจเซ เชตเชฟเชถเซเชฒเซเชทเชฃเชพเชคเซเชฎเช เชชเซเชฐเชคเชฟเชเซเชคเชฟเช เชชเชฐ เชเชพเช," เชชเชฐเชเชคเซ เชญเชฐเชคเซ เชฎเชพเชเซ เช เชเช เชตเชงเชพเชฐเชพเชจเซ เชเชฐเซเชฐเชฟเชฏเชพเชค เชเซ, เช เชจเซ เชเชตเซเช เชฒเชพเชเชคเซเช เชนเชคเซเช เชเซ เชเซ เชถเชเซเชฏ เชนเซเชฏ เชคเซ เชเชจเซ เชเชพเชณเชตเซเช เชเซเชเช. เช เชฎเซ FDW (เชซเซเชฐเซเชจ เชกเซเชเชพ เชฐเซเชชเชฐ) เชเซเชเซเชจเซเชฒเซเชเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช: เชเชตเชถเซเชฏเชเชชเชฃเซ, เช เชเช เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชกเซเชฌเซเชฒเชฟเชเช เชเซ, เชเซ SQL เชธเซเชเชพเชจเซเชกเชฐเซเชกเชฎเชพเช เชเซ, เชชเชฐเชเชคเซ เชคเซเชจเชพ เชชเซเชคเชพเชจเชพ เชตเชงเซ เช เชจเซเชเซเชณ เชเชจเซเชเชฐเชซเซเชธ เชธเชพเชฅเซ. เชคเซเชจเชพ เชเชงเชพเชฐเซ, เช เชฎเซ เชเช เชเชเซเชฒ เชคเซเชฏเชพเชฐ เชเชฐเซเชฏเซ, เชเซ เชเชเชฐเซ เชชเชเชกเชพเชฏเซ เช เชจเซ เช เชฎเซ เชคเซเชจเชพ เชชเชฐ เชธเชฎเชพเชงเชพเชจ เชเชฐเซเชฏเซเช. เชคเซเชจเซ เชตเชฟเชเชคเซ เชเช เช เชฒเช เชฒเซเชเชจเซ เชตเชฟเชทเชฏ เชเซ, เช เชจเซ เชเชฆเชพเช เชเช เชเชฐเชคเชพเช เชตเชงเซ, เชเชพเชฐเชฃ เชเซ เชนเซเช เชเชฃเซเช เชฌเชงเซเช เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช: เชกเซเชเชพเชฌเซเช เชธเซเชเซเชฎเชพเชจเซ เชธเชฟเชเชเซเชฐเชจเชพเชเช เชเชฐเชตเชพเชฅเซ เชฎเชพเชเชกเซเชจเซ เชเชเซเชธเซเชธ เชเชเชเซเชฐเซเชฒ เช เชจเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชกเซเชเชพเชจเชพ เชกเชฟเชชเชฐเซเชธเชจเชฒเชพเชเชเซเชถเชจ เชธเซเชงเซ. เชฐเชฟเชเชฐเซเชตเซเชถเชจ เชเชฐเชตเซเช เชชเชฃ เชเชฐเซเชฐเซ เชเซ เชเซ เช เชธเซเชฒเซเชฏเซเชถเชจ เชตเชพเชธเซเชคเชตเชฟเช เชตเชฟเชถเซเชฒเซเชทเชฃเชพเชคเซเชฎเช เชกเซเชเชพเชฌเซเชธเซเชธ เช เชจเซ เชฐเชฟเชชเซเชเซเชเชฐเซเช เชฎเชพเชเซ เชฐเชฟเชชเซเชฒเซเชธเชฎเซเชจเซเช เชจเชฅเซ; เชคเซ เชซเชเซเชค เชเซเชเซเชเชธ เชธเชฎเชธเซเชฏเชพเชจเซ เชนเชฒ เชเชฐเซ เชเซ.
เชเซเชเชจเชพ เชธเซเชคเชฐเซ เชคเซ เชเชจเชพ เชเซเชตเซ เชฆเซเชเชพเชฏ เชเซ:
เชคเซเชฏเชพเช เชเช PostgreSQL เชกเซเชเชพเชฌเซเช เชเซ เชเซเชฏเชพเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชคเซเชฎเชจเชพ เชเชพเชฐเซเชฏ เชกเซเชเชพเชจเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชถเชเซ เชเซ, เช
เชจเซ เชธเซเชฅเซ เช
เชเชคเซเชฏเชจเซเช, เชคเชฎเชพเชฎ เชธเซเชตเชพเชเชจเซ เชตเชฟเชถเซเชฒเซเชทเชฃเชพเชคเซเชฎเช เชชเซเชฐเชคเชฟเชเซเชคเชฟเช FDW เชฆเซเชตเชพเชฐเชพ เช เชกเซเชเชพเชฌเซเช เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒ เชเซ. เชเชจเชพเชฅเซ เชเชฃเชพ เชกเซเชเชพเชฌเซเชธเซเชธ เชชเชฐ เชเซเชตเซเชฐเซ เชฒเชเชตเชพเชจเซเช เชถเชเซเชฏ เชฌเชจเซ เชเซ, เช
เชจเซ เชคเซ เชถเซเช เชเซ เชคเซเชจเชพเชฅเซ เชเซเช เชซเชฐเช เชชเชกเชคเซ เชจเชฅเซ: PostgreSQL, MySQL, MongoDB เช
เชฅเชตเชพ เชฌเซเชเซเช เชเชเชเช (เชซเชพเชเชฒ, API, เชเซ เช
เชเชพเชจเช เชเซเช เชฏเซเชเซเชฏ เชฐเซเชชเชฐ เชจ เชนเซเชฏ, เชคเซ เชคเชฎเซ เชคเชฎเชพเชฐเซเช เชชเซเชคเชพเชจเซเช เชฒเชเซ เชถเชเซ เชเซ). เชธเชพเชฐเซเช, เชฌเชงเซเช เชธเชฐเชธ เชฒเชพเชเซ เชเซ! เชถเซเช เชเชชเชฃเซ เชคเซเชเซ เชฐเชนเซเชฏเชพ เชเซเช?
เชเซ เชฌเชงเซเช เชเชเชฒเซ เชเชกเชชเชฅเซ เช เชจเซ เชธเชฐเชณ เชฐเซเชคเซ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ, เชคเซ เชชเชเซ, เชธเชเชญเชตเชคเช, เชคเซเชฏเชพเช เชเซเช เชฒเซเช เชจ เชนเซเชค.
เชชเซเชธเซเชเชเซเชฐเซเชธ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชตเชฟเชจเชเชคเซเชเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซเชตเซ เชฐเซเชคเซ เชเชฐเซ เชเซ เชคเซ เชตเชฟเชถเซ เชธเซเชชเชทเซเช เชนเซเชตเซเช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ. เช เชคเชพเชฐเซเชเชฟเช เชฒเชพเชเซ เชเซ, เชชเชฐเชเชคเซ เชเชฃเซเชตเชพเชฐ เชฒเซเชเซ เชคเซเชจเชพ เชชเชฐ เชงเซเชฏเชพเชจ เชเชชเชคเชพ เชจเชฅเซ: เชชเซเชธเซเชเชเซเชฐเซเชธ เชตเชฟเชจเชเชคเซเชจเซ เชเชตเชพ เชญเชพเชเซเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเซ เชเซ เชเซ เชเซ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐ เชธเซเชตเชคเชเชคเซเชฐ เชฐเซเชคเซ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เช เชกเซเชเชพ เชเชเชคเซเชฐเชฟเชค เชเชฐเซ เชเซ เช เชจเซ เช เชเชคเชฟเชฎ เชเชฃเชคเชฐเซเช เชชเซเชคเซ เชเชฐเซ เชเซ, เชคเซเชฅเซ เชเซเชตเซเชฐเซ เชเชเซเชเซเชเซเชฏเซเชถเชจเชจเซ เชเชกเชช เชชเชฐ เชเชฃเซ เชเชงเชพเชฐ เชฐเชพเชเซ เชเซ. เชคเซ เชเซเชตเซ เชฐเซเชคเซ เชฒเชเชพเชฏ เชเซ. เชคเซ เชชเชฃ เชจเซเชเชงเชตเซเช เชเซเชเช: เชเซเชฏเชพเชฐเซ เชฐเซเชฎเซเช เชธเชฐเซเชตเชฐเชฅเซ เชกเซเชเชพ เชเชตเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเซเชฎเชพเช เชนเชตเซ เช เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพ เชนเซเชคเซ เชจเชฅเซ, เชถเซเชกเซเชฏเซเชฒเชฐเชจเซ เชฎเชฆเชฆ เชเชฐเชถเซ เชคเซเชตเซเช เชเชเช เชจเชฅเซ, เชคเซเชฅเซ, เชซเชเซเชค เชเชชเชฃเซ เช เชคเซเชจเซ เชฎเชฆเชฆ เช เชจเซ เชธเชฒเชพเชน เชเชชเซ เชถเชเซเช เชเซเช. เช เชจเซ เช เชฌเชฐเชพเชฌเชฐ เชเซ เชเซเชจเชพ เชตเชฟเชถเซ เชนเซเช เชตเชงเซ เชตเชฟเชเชคเชตเชพเชฐ เชตเชพเชค เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช.
เชเช เชธเชฐเชณ เชชเซเชฐเชถเซเชจ เช เชจเซ เชคเซเชจเซ เชธเชพเชฅเซ เชเช เชฏเซเชเชจเชพ
เชชเซเชธเซเชเชเซเชฐเซเชธ เชเซเชตเซ เชฐเซเชคเซ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐ 6 เชฎเชฟเชฒเชฟเชฏเชจ เชชเชเชเซเชคเชฟ เชเซเชฌเชฒเชจเซ เชชเซเชเซ เชเซ เชคเซ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชเซ, เชเชพเชฒเซ เชเช เชธเชฐเชณ เชฏเซเชเชจเชพ เชเซเชเช.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table;
Aggregate (cost=418383.23..418383.24 rows=1 width=8) (actual time=3857.198..3857.198 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..402376.14 rows=6402838 width=0) (actual time=4.874..3256.511 rows=6406868 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Remote SQL: SELECT NULL FROM fdw_schema.table
Planning time: 0.986 ms
Execution time: 3857.436 ms
เชตเชฐเซเชฌเซเช เชธเซเชเซเชเชฎเซเชจเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฅเซ เช เชฎเชจเซ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐเชจเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเชถเซ เชคเซ เชเซเชตเซเชฐเซ เชเซเชตเชพ เชฎเชณเซ เชเซ เช เชจเซ เชเซเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เช เชฎเซ เชเชเชณเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชฎเชพเชเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเซเชถเซเช (RemoteSQL เชฒเชพเชเชจ).
เชเชพเชฒเซ เชฅเซเชกเชพ เชเชเชณ เชเชเช เช เชจเซ เช เชฎเชพเชฐเซ เชตเชฟเชจเชเชคเซเชฎเชพเช เชเชฃเชพ เชซเชฟเชฒเซเชเชฐเซเชธ เชเชฎเซเชฐเซเช: เชเช เชฎเชพเชเซ เชฌเซเชฒเชฟเชฏเชจ เชเซเชทเซเชคเซเชฐ, เชเชเชจเชพ เชฆเซเชตเชพเชฐเชพ เชเช เชเชพเชเชฎเชธเซเชเซเชฎเซเชช เช เชเชคเชฐเชพเชฒเชฎเชพเช เช เชจเซ เชเช เชฌเชพเชฏ jsonb.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta->>'source' = 'test';
Aggregate (cost=577487.69..577487.70 rows=1 width=8) (actual time=27473.818..25473.819 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..577469.21 rows=7390 width=0) (actual time=31.369..25372.466 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND (("table".meta ->> 'source'::text) = 'test'::text) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 5046843
Remote SQL: SELECT created_dt, is_active, meta FROM fdw_schema.table
Planning time: 0.665 ms
Execution time: 27474.118 ms
เช เชคเซ เชเซ เชเซเชฏเชพเช เชชเซเชฐเชถเซเชจเซ เชฒเชเชคเซ เชตเชเชคเซ เชคเชฎเชพเชฐเซ เชงเซเชฏเชพเชจ เชเชชเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชซเชฟเชฒเซเชเชฐเซเชธ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชฅเชฏเชพ เชจ เชนเชคเชพ, เชเซเชจเซ เช เชฐเซเชฅ เชเซ เชเซ เชคเซเชจเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ, เชชเซเชธเซเชเชเซเชฐเซเชธ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชซเชฟเชฒเซเชเชฐ เชเชฐเชตเชพ (เชซเชฟเชฒเซเชเชฐ เชชเชเชเซเชคเชฟ) เช เชจเซ เชเชเชคเซเชฐเซเชเชฐเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฎเชพเชฎ 6 เชฎเชฟเชฒเชฟเชฏเชจ เชชเชเชเซเชคเชฟเช เชเซเชเชเซ เชเซ. เชธเชซเชณเชคเชพเชจเซ เชเชพเชตเซ เช เชเซเชตเซเชฐเซ เชฒเชเชตเชพเชจเซ เชเซ เชเซเชฅเซ เชซเชฟเชฒเซเชเชฐเซเชธ เชฐเชฟเชฎเซเช เชฎเชถเซเชจ เชชเชฐ เชเซเชฐเชพเชจเซเชธเชซเชฐ เชฅเชพเชฏ เช เชจเซ เช เชฎเซ เชซเชเซเชค เชเชฐเซเชฐเซ เชชเชเชเซเชคเชฟเช เชชเซเชฐเชพเชชเซเชค เชเชฐเซเช เชเซเช เช เชจเซ เชเชเชคเซเชฐเชฟเชค เชเชฐเซเช เชเซเช.
เชคเซ เชเซเชเชฒเซเช เชฌเซเชฒเชจเชถเซเช เชเซ
เชฌเซเชฒเชฟเชฏเชจ เชเซเชทเซเชคเซเชฐเซ เชธเชพเชฅเซ เชฌเชงเซเช เชธเชฐเชณ เชเซ. เชฎเซเชณ เชตเชฟเชจเชเชคเซเชฎเชพเช, เชธเชฎเชธเซเชฏเชพ เชเชชเชฐเซเชเชฐเชจเซ เชเชพเชฐเชฃเซ เชนเชคเซ is. เชเซ เชคเชฎเซ เชคเซเชจเซ เชธเชพเชฅเซ เชฌเชฆเชฒเซ =, เชชเชเซ เชเชชเชฃเชจเซ เชจเซเชเซเชจเซเช เชชเชฐเชฟเชฃเชพเชฎ เชฎเชณเซ เชเซ:
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active = True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta->>'source' = 'test';
Aggregate (cost=508010.14..508010.15 rows=1 width=8) (actual time=19064.314..19064.314 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..507988.44 rows=8679 width=0) (actual time=33.035..18951.278 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: ((("table".meta ->> 'source'::text) = 'test'::text) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 3567989
Remote SQL: SELECT created_dt, meta FROM fdw_schema.table WHERE (is_active)
Planning time: 0.834 ms
Execution time: 19064.534 ms
เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เชซเชฟเชฒเซเชเชฐ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐ เชเชกเชพเชจ เชญเชฐเซ, เช เชจเซ เชเชเซเชเซเชเซเชฏเซเชถเชจเชจเซ เชธเชฎเชฏ 27 เชฅเซ 19 เชธเซเชเชเชก เชธเซเชงเซ เชเชเชพเชกเซ เชฆเซเชตเชพเชฎเชพเช เชเชตเซเชฏเซ.
เชจเซเชเชงเชจเซเชฏ เชเซ เชเซ เชเชชเชฐเซเชเชฐ is เชเชชเชฐเซเชเชฐเชฅเซ เช เชฒเช = เชเชพเชฐเชฃ เชเซ เชคเซ เชจเชฒ เชตเซเชฒเซเชฏเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเซ เชถเชเซ เชเซ. เชคเซเชจเซ เช เชฐเซเชฅ เช เชเซ เชเซ เชธเชพเชเซเช เชจเชฅเซ เชซเชฟเชฒเซเชเชฐเชฎเชพเช False เช เชจเซ Null เชฎเซเชฒเซเชฏเซ เชเซเชกเซ เชฆเซเชถเซ, เชเซเชฏเชพเชฐเซ != เชธเชพเชเซเช เชฎเชพเชคเซเชฐ เชเซเชเชพ เชฎเซเชฒเซเชฏเซ เช เชเซเชกเชถเซ. เชคเซเชฅเซ, เชเซเชฏเชพเชฐเซ เชเชชเชฐเซเชเชฐเชจเซ เชฌเชฆเชฒเซ เชฐเชนเซเชฏเชพ เชนเซเชฏ เชจเชฅเซ OR เชเชชเชฐเซเชเชฐ เชธเชพเชฅเซเชจเซ เชฌเซ เชถเชฐเชคเซ เชซเชฟเชฒเซเชเชฐเชจเซ เชชเชธเชพเชฐ เชเชฐเชตเซ เชเซเชเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, WHERE (col != True) เช เชฅเชตเชพ (col null เชเซ).
เช เชฎเซ เชฌเซเชฒเชฟเชฏเชจ เชธเชพเชฅเซ เชตเซเชฏเชตเชนเชพเชฐ เชเชฐเซเชฏเซ เชเซ, เชเชพเชฒเซ เชเชเชณ เชตเชงเซเช. เชนเชฎเชฃเชพเช เชฎเชพเชเซ, เชเชพเชฒเซ เช เชจเซเชฏ เชซเซเชฐเชซเชพเชฐเซเชจเซ เช เชธเชฐเชจเซ เชธเซเชตเชคเชเชคเซเชฐ เชฐเซเชคเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชตเชพ เชฎเชพเชเซ เชฌเซเชฒเชฟเชฏเชจ เชซเชฟเชฒเซเชเชฐเชจเซ เชคเซเชจเชพ เชฎเซเชณ เชธเซเชตเชฐเซเชชเชฎเชพเช เชชเชฐเชค เชเชฐเซเช.
เชเชพเชเชฎเชธเซเชเซเชฎเซเชชเชเซเช? hz
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชคเชฎเชพเชฐเซ เชตเชพเชฐเชเชตเชพเชฐ เชชเซเชฐเชฏเซเช เชเชฐเชตเซ เชชเชกเซ เชเซ เชเซ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชถเชพเชฎเซเชฒ เชนเซเชฏ เชคเซเชตเซ เชตเชฟเชจเชเชคเซ เชเซเชตเซ เชฐเซเชคเซ เชฏเซเชเซเชฏ เชฐเซเชคเซ เชฒเชเชตเซ, เช เชจเซ เชคเซ เชชเชเซ เช เชเชตเซเช เชถเชพ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ เชคเซเชจเซ เชธเชฎเชเซเชคเซ เชถเซเชงเซ. เชเชจเซเชเชฐเชจเซเช เชชเชฐ เช เชตเชฟเชถเซ เชฌเชนเซ เชเชเซ เชฎเชพเชนเชฟเชคเซ เชฎเชณเซ เชถเชเซ เชเซ. เชคเซเชฅเซ, เชชเซเชฐเชฏเซเชเซเชฎเชพเช เช เชฎเชจเซ เชเชพเชฃเชตเชพ เชฎเชณเซเชฏเซเช เชเซ เชเช เชจเชฟเชถเซเชเชฟเชค เชคเชพเชฐเซเช เชซเชฟเชฒเซเชเชฐ เชงเชกเชพเชเชพ เชธเชพเชฅเซ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐ เชเชกเซ เชเซ, เชชเชฐเชเชคเซ เชเซเชฏเชพเชฐเซ เชเชชเชฃเซ เชคเชพเชฐเซเชเชจเซ เชเชคเชฟเชถเซเชฒ เชฐเซเชคเซ เชธเซเช เชเชฐเชตเชพ เชฎเชพเชเชเซเช เชเซเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, now() เช เชฅเชตเชพ CURRENT_DATE, เชคเซ เชเชตเซเช เชฅเชคเซเช เชจเชฅเซ. เช เชฎเชพเชฐเชพ เชเชฆเชพเชนเชฐเชฃเชฎเชพเช, เช เชฎเซ เชเช เชซเชฟเชฒเซเชเชฐ เชเชฎเซเชฐเซเชฏเซเช เชเซเชฅเซ เชเชฐเซเชจเซ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฒ เชเซเชฒเชฎเชฎเชพเช เชญเซเชคเชเชพเชณเชฎเชพเช เชฌเชฐเชพเชฌเชฐ 1 เชฎเชนเชฟเชจเชพเชจเซ เชกเซเชเชพ เชนเซเชฏ (CURRENT_DATE - INTERVAL '7 เชฎเชนเชฟเชจเซ' เช เชจเซ CURRENT_DATE - INTERVAL '6 เชฎเชนเชฟเชจเซ' เชตเชเซเชเซ). เช เชเชฟเชธเซเชธเชพเชฎเชพเช เช เชฎเซ เชถเซเช เชเชฐเซเชฏเซเช?
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt >= (SELECT CURRENT_DATE::timestamptz - INTERVAL '7 month')
AND created_dt <(SELECT CURRENT_DATE::timestamptz - INTERVAL '6 month')
AND meta->>'source' = 'test';
Aggregate (cost=306875.17..306875.18 rows=1 width=8) (actual time=4789.114..4789.115 rows=1 loops=1)
Output: count(1)
InitPlan 1 (returns $0)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.007..0.008 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '7 mons'::interval)
InitPlan 2 (returns $1)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.002..0.002 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)
-> Foreign Scan on fdw_schema."table" (cost=100.02..306874.86 rows=105 width=0) (actual time=23.475..4681.419 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND (("table".meta ->> 'source'::text) = 'test'::text))
Rows Removed by Filter: 76934
Remote SQL: SELECT is_active, meta FROM fdw_schema.table WHERE ((created_dt >= $1::timestamp with time zone)) AND ((created_dt < $2::timestamp with time zone))
Planning time: 0.703 ms
Execution time: 4789.379 ms
เช เชฎเซ เชเชฏเซเชเชเชจเซ เช เชเชพเชเชฅเซ เชธเชฌเชเซเชตเซเชฐเซเชฎเชพเช เชคเชพเชฐเซเชเชจเซ เชเชฃเชคเชฐเซ เชเชฐเชตเชพ เช เชจเซ เชคเซเชฏเชพเชฐ เชตเซเชฐเซเชเชฌเชฒเชจเซ เชซเชฟเชฒเซเชเชฐเชฎเชพเช เชชเชพเชธ เชเชฐเชตเชพเชจเซเช เชเชนเซเชฏเซเช. เช เชจเซ เช เชธเชเชเซเชคเซ เช เชฎเชจเซ เชเช เชเชคเซเชคเชฎ เชชเชฐเชฟเชฃเชพเชฎ เชเชชเซเชฏเซเช, เชตเชฟเชจเชเชคเซ เชฒเชเชญเช 6 เชเชฃเซ เชเชกเชชเซ เชฌเชจเซ!
เชซเชฐเซเชฅเซ, เช เชนเซเช เชธเชพเชตเชเซเชคเซ เชฐเชพเชเชตเซ เชเชฐเซเชฐเซ เชเซ: เชธเชฌเชเซเชตเซเชฐเซเชจเซ เชกเซเชเชพ เชชเซเชฐเชเชพเชฐ เช เชซเซเชฒเซเชก เชเซเชตเซ เช เชนเซเชตเซ เชเซเชเช เชเซ เชเซเชจเชพ เชชเชฐ เชเชชเชฃเซ เชซเชฟเชฒเซเชเชฐ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช, เช เชจเซเชฏเชฅเชพ เชชเซเชฒเชพเชจเชฐ เชจเชเซเชเซ เชเชฐเชถเซ เชเซ เชชเซเชฐเชเชพเชฐเซ เช เชฒเช เชนเซเชตเชพเชจเซ เชเชพเชฐเชฃเซ, เชธเซเชชเซเชฐเชฅเชฎ เชฌเชงเซเช เชฎเซเชณเชตเชตเซเช เชเชฐเซเชฐเซ เชเซ. เชกเซเชเชพ เช เชจเซ เชคเซเชจเซ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชซเชฟเชฒเซเชเชฐ เชเชฐเซ.
เชเชพเชฒเซ เชคเชพเชฐเซเช เชซเชฟเชฒเซเชเชฐเชจเซ เชคเซเชจเชพ เชฎเซเชณ เชฎเซเชฒเซเชฏเชฎเชพเช เชชเชฐเชค เชเชฐเซเช.
เชซเซเชฐเซเชกเซ เชตเชฟ. เชเซเชธเซเชจเชฌ
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชฌเซเชฒเชฟเชฏเชจ เชซเซเชฒเซเชกเซเชธ เช เชจเซ เชคเชพเชฐเซเชเซเช เชชเชนเซเชฒเชพเชฅเซ เช เช เชฎเชพเชฐเซ เชเซเชตเซเชฐเซ เชชเชฐเซเชฏเชพเชชเซเชค เชฐเซเชคเซ เชเชกเชชเซ เชเชฐเซ เชฆเซเชงเซ เชเซ, เชชเชฐเชเชคเซ เชเช เชตเชงเซ เชกเซเชเชพ เชชเซเชฐเชเชพเชฐ เชฌเชพเชเซ เชนเชคเซ. เชคเซเชจเชพ เชฆเซเชตเชพเชฐเชพ เชซเชฟเชฒเซเชเชฐเชฟเชเช เชธเชพเชฅเซเชจเซ เชฒเชกเชพเช, เชชเซเชฐเชฎเชพเชฃเชฟเชเชชเชฃเซ, เชนเชเซ เชชเชฃ เชธเชฎเชพเชชเซเชค เชฅเช เชจเชฅเซ, เชเซเชเซ เช เชนเซเช เชชเชฃ เชธเชซเชณเชคเชพ เชเซ. เชคเซเชฅเซ, เช เชฐเซเชคเซ เช เชฎเซ เชซเชฟเชฒเซเชเชฐ เชชเชธเชพเชฐ เชเชฐเชตเชพเชฎเชพเช เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเชพ jsonb เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐ เชซเซเชฒเซเชก.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta @> '{"source":"test"}'::jsonb;
Aggregate (cost=245463.60..245463.61 rows=1 width=8) (actual time=6727.589..6727.590 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=1100.00..245459.90 rows=1478 width=0) (actual time=16.213..6634.794 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 619961
Remote SQL: SELECT created_dt, is_active FROM fdw_schema.table WHERE ((meta @> '{"source": "test"}'::jsonb))
Planning time: 0.747 ms
Execution time: 6727.815 ms
เชเชชเชฐเซเชเชฐเซเชจเซ เชซเชฟเชฒเซเชเชฐ เชเชฐเชตเชพเชจเซ เชฌเชฆเชฒเซ, เชคเชฎเชพเชฐเซ เชเช เชเชชเชฐเซเชเชฐเชจเซ เชนเชพเชเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ เชเชตเชถเซเชฏเช เชเซ jsonb เชเช เช เชฒเช เชฎเชพเช. เชฎเซเชณ 7 เชจเซ เชฌเชฆเชฒเซ 29 เชธเซเชเชเชก jsonb เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐ, เชชเชฐเชเชคเซ เช เชนเซเช เชเช เชฎเชฐเซเชฏเชพเชฆเชพ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชตเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ: เช เชฎเซ เชกเซเชเชพเชฌเซเชเชจเชพ เชธเชเชธเซเชเชฐเชฃ 9.6 เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช, เชชเชฐเชเชคเซ เชเชชเซเชฐเชฟเชฒเชจเชพ เช เชเชค เชธเซเชงเซเชฎเชพเช เช เชฎเซ เชเซเชฒเซเชฒเซ เชชเชฐเซเชเซเชทเชฃเซ เชชเซเชฐเซเชฃ เชเชฐเชตเชพเชจเซ เช เชจเซ เชธเชเชธเซเชเชฐเชฃ 12 เชชเชฐ เชเชตเชพเชจเซ เชฏเซเชเชจเชพ เชฌเชจเชพเชตเซเช เชเซเช. เชเชเชตเชพเชฐ เช เชฎเซ เช เชชเชกเซเช เชเชฐเซเช, เชชเชเซ เช เชฎเซ เชคเซ เชเซเชตเซ เชฐเซเชคเซ เช เชธเชฐ เชเชฐเซ เชเซ เชคเซ เชตเชฟเชถเซ เชฒเชเซเชถเซเช, เชเชพเชฐเชฃ เชเซ เชคเซเชฏเชพเช เชเชฃเชพ เชฌเชงเชพ เชซเซเชฐเชซเชพเชฐเซ เชเซ เชเซเชจเชพ เชฎเชพเชเซ เชเชฃเซ เชเชถเชพ เชเซ: json_path, เชจเชตเซเช CTE เชตเชฐเซเชคเชจ, เชฆเชฌเชพเชฃ เชกเชพเชเชจ (เชธเชเชธเซเชเชฐเชฃ 10 เชฅเซ เช เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชเซ). เชนเซเช เชเชฐเซเชเชฐ เชคเซเชจเซ เชเชฒเซเชฆเซ เช เชเชฎเชพเชตเชตเชพ เชฎเชพเชเชเซ เชเซเช.
เชคเซเชจเซ เชชเซเชฐเซ เชเชฐเซ เชจเชพเช
เช เชฎเซ เชชเชฐเซเชเซเชทเชฃ เชเชฐเซเชฏเซเช เชเซ เชเซ เชฆเชฐเซเช เชซเซเชฐเชซเชพเชฐ เชตเชฟเชจเชเชคเซเชจเซ เชเชกเชชเชจเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชฐเซเชคเซ เชเซเชตเซ เชฐเซเชคเซ เช เชธเชฐ เชเชฐเซ เชเซ. เชเชพเชฒเซ เชนเชตเซ เชเซเชเช เชเซ เชเซเชฏเชพเชฐเซ เชคเซเชฐเชฃเซเชฏ เชซเชฟเชฒเซเชเชฐ เชฏเซเชเซเชฏ เชฐเซเชคเซ เชฒเชเชตเชพเชฎเชพเช เชเชตเซ เชคเซเชฏเชพเชฐเซ เชถเซเช เชฅเชพเชฏ เชเซ.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active = True
AND created_dt >= (SELECT CURRENT_DATE::timestamptz - INTERVAL '7 month')
AND created_dt <(SELECT CURRENT_DATE::timestamptz - INTERVAL '6 month')
AND meta @> '{"source":"test"}'::jsonb;
Aggregate (cost=322041.51..322041.52 rows=1 width=8) (actual time=2278.867..2278.867 rows=1 loops=1)
Output: count(1)
InitPlan 1 (returns $0)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.010..0.010 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '7 mons'::interval)
InitPlan 2 (returns $1)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.003..0.003 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)
-> Foreign Scan on fdw_schema."table" (cost=100.02..322041.41 rows=25 width=0) (actual time=8.597..2153.809 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Remote SQL: SELECT NULL FROM fdw_schema.table WHERE (is_active) AND ((created_dt >= $1::timestamp with time zone)) AND ((created_dt < $2::timestamp with time zone)) AND ((meta @> '{"source": "test"}'::jsonb))
Planning time: 0.820 ms
Execution time: 2279.087 ms
เชนเชพ, เชตเชฟเชจเชเชคเซ เชตเชงเซ เชเชเชฟเชฒ เชฒเชพเชเซ เชเซ, เช เชซเชฐเชเชฟเชฏเชพเชค เชซเซ เชเซ, เชชเชฐเชเชคเซ เช เชฎเชฒเชจเซ เชเชกเชช 2 เชธเซเชเชจเซเชก เชเซ, เชเซ 10 เชเชฃเชพ เชเชฐเชคเชพเช เชตเชงเซ เชเชกเชชเซ เชเซ! เช เชจเซ เช เชฎเซ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช เชจเชพเชจเชพ เชกเซเชเชพ เชธเซเช เชธเชพเชฎเซ เชเช เชธเชฐเชณ เชเซเชตเซเชฐเซ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช. เชตเชพเชธเซเชคเชตเชฟเช เชตเชฟเชจเชเชคเซเช เชชเชฐ, เช เชฎเชจเซ เชเซเชเชฒเชพเช เชธเซ เชเชฃเซ เชตเชงเชพเชฐเซ เชฎเชณเซเชฏเซ เชเซ.
เชธเชพเชฐเชพเชเชถ เชฎเชพเชเซ: เชเซ เชคเชฎเซ FDW เชธเชพเชฅเซ PostgreSQL เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชคเซ เชนเชเชฎเซเชถเชพ เชคเชชเชพเชธเซ เชเซ เชฌเชงเชพ เชซเชฟเชฒเซเชเชฐเซเชธ เชฐเชฟเชฎเซเช เชธเชฐเซเชตเชฐ เชชเชฐ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ, เช เชจเซ เชคเชฎเซ เชเซเชถ เชฅเชถเซ... เชเชเชพเชฎเชพเช เชเชเชพ เชเซเชฏเชพเช เชธเซเชงเซ เชคเชฎเซ เชเซเชฆเชพ เชเซเชฆเชพ เชธเชฐเซเชตเชฐเชฎเชพเชเชฅเซ เชเซเชทเซเชเชเซ เชตเชเซเชเซ เชเซเชกเชพเชถเซ เชจเชนเซเช. เชชเชฐเชเชคเซ เชคเซ เชฌเซเชเชพ เชฒเซเช เชฎเชพเชเซ เชเช เชตเชพเชฐเซเชคเชพ เชเซ.
เชคเชฎเชพเชฐเชพ เชงเซเชฏเชพเชจ เชฌเชฆเชฒ เชเชญเชพเชฐ! เชฎเชจเซ เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช เชคเชฎเชพเชฐเชพ เช
เชจเซเชญเชตเซ เชตเชฟเชถเซ เชชเซเชฐเชถเซเชจเซ, เชเชฟเชชเซเชชเชฃเซเช เช
เชจเซ เชตเชพเชฐเซเชคเชพเช เชธเชพเชเชญเชณเชตเซ เชเชฎเชถเซ.
เชธเซเชฐเซเชธ: www.habr.com