เชฌเชฟเชฒเซเชกเชฐเซ‹ เชฎเชพเชŸเซ‡ B2B เชธเซ‡เชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซ€

เชตเชงเซ เช‰เชคเซเชชเชพเชฆเช• เชธเชฐเซเชตเชฐ เชชเชฐ เช—เชฏเชพ เชตเชฟเชจเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เช•เซเชตเซ‡เชฐเซ€เชเชจเซ€ เชธเช‚เช–เซเชฏเชพ 10 เช—เชฃเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชงเชพเชฐเชตเซ€ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชœเชพเชณเชตเชตเซ€? เชนเซเช‚ เชคเชฎเชจเซ‡ เช•เชนเซ€เชถ เช•เซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจเชฎเชพเช‚ เชฅเชฏเซ‡เชฒเชพ เช˜เชŸเชพเชกเชพ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซเชฏเซ‹, เช…เชฎเซ‡ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เชธเซ‡เชตเชพ เช†เชชเชตเชพ เช…เชจเซ‡ เช•เชฎเซเชชเซเชฏเซเชŸเชฟเช‚เช— เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ€ เช•เชฟเช‚เชฎเชคเชฎเชพเช‚ เชตเชงเชพเชฐเซ‹ เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ SQL เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเซ€.

เชนเซเช‚ เชฌเชพเช‚เชงเช•เชพเชฎ เช•เช‚เชชเชจเซ€เช“เชฎเชพเช‚ เชตเซเชฏเชตเชธเชพเชฏเชฟเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‡เชตเชพ เช†เชชเซเช‚ เช›เซเช‚. เช…เชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เชฒเช—เชญเช— 3 เชนเชœเชพเชฐ เช•เช‚เชชเชจเซ€เช“ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฅเซ‡ เชฆเชฐเชฐเซ‹เชœ 10 เชนเชœเชพเชฐเชฅเซ€ เชตเชงเซ เชฒเซ‹เช•เซ‹ 4-10 เช•เชฒเชพเช• เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ เช†เชฏเซ‹เชœเชจ, เชธเซ‚เชšเชจเชพ, เชšเซ‡เชคเชตเชฃเซ€, เชฎเชพเชจเซเชฏเชคเชพเชจเซ€ เชตเชฟเชตเชฟเชง เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เช•เชฐเซ‡ เช›เซ‡... เช…เชฎเซ‡ PostgreSQL 9.6 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชฒเช—เชญเช— 300 เช•เซ‹เชทเซเชŸเช•เซ‹ เช›เซ‡ เช…เชจเซ‡ เชฆเชฐเชฐเซ‹เชœ 200 เชฎเชฟเชฒเชฟเชฏเชจ เชชเซเชฐเชถเซเชจเซ‹ (10 เชนเชœเชพเชฐ เช…เชฒเช— เช…เชฒเช—) เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡. เชธเชฐเซ‡เชฐเชพเชถ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 3-4 เชนเชœเชพเชฐ เชตเชฟเชจเช‚เชคเซ€เช“ เช›เซ‡, เชธเซŒเชฅเซ€ เชตเชงเซ เชธเช•เซเชฐเชฟเชฏ เช•เซเชทเชฃเซ‹เชฎเชพเช‚ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชก 10 เชนเชœเชพเชฐเชฅเซ€ เชตเชงเซ เชตเชฟเชจเช‚เชคเซ€เช“. เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชชเซเชฐเชถเซเชจเซ‹ OLAP เช›เซ‡. เชคเซ‡เชฎเชพเช‚ เช˜เชฃเชพ เช“เช›เชพ เช‰เชฎเซ‡เชฐเชพเช“, เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช…เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ OLTP เชฒเซ‹เชก เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชนเชณเชตเซ‹ เช›เซ‡. เชฎเซ‡เช‚ เช† เชฌเชงเชพ เชจเช‚เชฌเชฐเซ‹ เช†เชชเซเชฏเชพ เช›เซ‡ เชœเซ‡เชฅเซ€ เช•เชฐเซ€เชจเซ‡ เชคเชฎเซ‡ เช…เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชธเซเช•เซ‡เชฒเชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเซ€ เชถเช•เซ‹ เช…เชจเซ‡ เชธเชฎเชœเซ€ เชถเช•เซ‹ เช•เซ‡ เช…เชฎเชพเชฐเซ‹ เช…เชจเซเชญเชต เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เซ‡เชŸเชฒเซ‹ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡.

เชเช• เชšเชฟเชคเซเชฐ. เช—เซ€เชคเชพเชคเซเชฎเช•

เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชตเชฟเช•เชพเชธ เชถเชฐเซ‚ เช•เชฐเซเชฏเซ‹, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช–เชฐเซ‡เช–เชฐ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เชจ เชนเชคเซเช‚ เช•เซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเชฐ เช•เชฏเชพ เชชเซเชฐเช•เชพเชฐเชจเซ‹ เชญเชพเชฐ เช†เชตเชถเซ‡ เช…เชจเซ‡ เชœเซ‹ เชธเชฐเซเชตเชฐ เช–เซ‡เช‚เชšเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเชถเซ‡ เชคเซ‹ เช…เชฎเซ‡ เชถเซเช‚ เช•เชฐเซ€เชถเซเช‚. เชกเซ‡เชŸเชพเชฌเซ‡เช เชกเชฟเชเชพเช‡เชจ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เช…เชฎเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชญเชฒเชพเชฎเชฃเซ‹เชจเซเช‚ เชชเชพเชฒเชจ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชชเซ‹เชคเชพเชจเซ‡ เชชเช—เชฎเชพเช‚ เชจ เชฎเชพเชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹, เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชธเชฒเชพเชนเชฅเซ€ เช†เช—เชณ เชตเชงเซเชฏเชพ เชœเซ‡เชฎ เช•เซ‡ "เชชเซ‡เชŸเชฐเซเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚. เชเชจเซเชŸเชฟเชŸเซ€ เชเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸ เชฎเซ‚เชฒเซเชฏเซ‹ เช…เชฎเซ‡ เช…เช‚เชฆเชฐ เช—เชฏเชพ เชจเชฅเซ€. เช…เชฎเซ‡ เชกเซ‡เชŸเชพ เชฐเซ€เชกเชจเซเชกเชจเซเชธเซ€เชจเซ‡ เชŸเชพเชณเซ€เชจเซ‡, เชจเซ‹เชฐเซเชฎเชฒเชพเช‡เชเซ‡เชถเชจเชจเชพ เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชกเชฟเชเชพเช‡เชจ เช•เชฐเซ€ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเซเช• เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เช•เชพเชณเชœเซ€ เชฒเซ€เชงเซ€ เชจเชฅเซ€. เชชเซเชฐเชฅเชฎ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เช†เชตเชคเชพเชจเซ€ เชธเชพเชฅเซ‡ เชœ, เช…เชฎเชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเชฎเชธเซเชฏเชพเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹. เชนเช‚เชฎเซ‡เชถเชจเซ€ เชœเซ‡เชฎ, เช…เชฎเซ‡ เช† เชฎเชพเชŸเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชคเซˆเชฏเชพเชฐ เชจ เชนเชคเชพ. เชชเซเชฐเชฅเชฎ เชธเชฎเชธเซเชฏเชพเช“ เชธเชฐเชณ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚. เชเช• เชจเชฟเชฏเชฎ เชคเชฐเซ€เช•เซ‡, เชจเชตเซเช‚ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ เชฌเชงเซเช‚ เชนเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชชเชฐเช‚เชคเซ เชเช• เชธเชฎเชฏ เชเชตเซ‹ เช†เชตเซเชฏเซ‹ เชœเซเชฏเชพเชฐเซ‡ เชธเชฐเชณ เชชเซ‡เชšเซ‹ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ€ เชฆเซ€เชงเซเช‚. เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช…เชจเซเชญเชตเชจเซ‹ เช…เชญเชพเชต เช›เซ‡ เช…เชจเซ‡ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เช•เชพเชฐเชฃ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเซเช‚ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชตเชงเซเชจเซ‡ เชตเชงเซ เชฎเซเชถเซเช•เซ‡เชฒ เชฌเชจเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเซ€เชจเซ‡, เช…เชฎเซ‡ เชเชตเชพ เชจเชฟเชทเซเชฃเชพเชคเซ‹เชจเซ‡ เชจเซ‹เช•เชฐเซ€เช เชฐเชพเช–เซเชฏเชพ เช•เซ‡ เชœเซ‡เชฎเชฃเซ‡ เช…เชฎเชจเซ‡ เชธเชฐเซเชตเชฐเชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ€, เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—เชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เช…เชฎเชจเซ‡ เช•เซเชฏเชพเช‚ เชถเซ‹เชงเชตเซเช‚ เชคเซ‡ เชฌเชคเชพเชตเซเชฏเซเช‚. เช†เช‚เช•เชกเชพ.

เชšเชฟเชคเซเชฐ เชฌเซ‡. เช†เช‚เช•เชกเชพเช•เซ€เชฏ

เชคเซ‡เชฅเซ€ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฒเช—เชญเช— 10 เชนเชœเชพเชฐ เช…เชฒเช—-เช…เชฒเช— เช•เซเชตเซ‡เชฐเซ€เช เช›เซ‡ เชœเซ‡ เช…เชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเชฐ เชฆเชฐเชฐเซ‹เชœ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† 10 เชนเชœเชพเชฐเชฎเชพเช‚เชฅเซ€, เชเชตเชพ เชฐเชพเช•เซเชทเชธเซ‹ เช›เซ‡ เชœเซ‡ 2-3 เชเชฎเชเชธเชจเชพ เชธเชฐเซ‡เชฐเชพเชถ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชธเชฎเชฏ เชธเชพเชฅเซ‡ 0.1-0.3 เชฎเชฟเชฒเชฟเชฏเชจ เชตเช–เชค เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ 30 เชธเซ‡เช•เชจเซเชกเชจเชพ เชธเชฐเซ‡เชฐเชพเชถ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชธเชฎเชฏ เชธเชพเชฅเซ‡ เช•เซเชตเซ‡เชฐเซ€ เช›เซ‡ เชœเซ‡เชจเซ‡ เชฆเชฟเชตเชธเชฎเชพเช‚ 100 เชตเช–เชค เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชคเชฎเชพเชฎ 10 เชนเชœเชพเชฐ เชชเซเชฐเชถเซเชจเซ‹เชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เชจ เชนเชคเซเช‚, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹เชจเซ‡ เช•เซเชฏเชพเช‚ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเชค เช•เชฐเชตเชพ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เช˜เชฃเซ€ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเซ‹ เชชเช›เซ€, เช…เชฎเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‡ เชชเซเชฐเช•เชพเชฐเซ‹เชฎเชพเช‚ เชตเชฟเชญเชพเชœเซ€เชค เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚.

เชŸเซ‹เชšเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“

เช† เชธเซŒเชฅเซ€ เชญเชพเชฐเซ‡ เชชเซเชฐเชถเซเชจเซ‹ เช›เซ‡ เชœเซ‡ เชธเซŒเชฅเซ€ เชตเชงเซ เชธเชฎเชฏ เชฒเซ‡ เช›เซ‡ (เช•เซเชฒ เชธเชฎเชฏ). เช† เชเชตเซ€ เช•เซเชตเซ‡เชฐเซ€เช เช›เซ‡ เชœเซ‡เชจเซ‡ เช˜เชฃเซ€ เชตเชพเชฐ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชฅเชตเชพ เช•เซเชตเซ‡เชฐเซ€เช เช•เซ‡ เชœเซ‡ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช˜เชฃเซ‹ เชฒเชพเช‚เชฌเซ‹ เชธเชฎเชฏ เชฒเซ‡ เช›เซ‡ (เชฒเชพเช‚เชฌเชพ เช…เชจเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐเชจเชพ เชชเซเชฐเชถเซเชจเซ‹ เชเชกเชช เชฎเชพเชŸเซ‡เชจเซ€ เชฒเชกเชคเชจเชพ เชชเซเชฐเชฅเชฎ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเชฎเชพเช‚ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ). เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชธเชฐเซเชตเชฐ เชคเซ‡เชฎเชจเชพ เช…เชฎเชฒ เชชเชฐ เชธเซŒเชฅเซ€ เชตเชงเซ เชธเชฎเชฏ เชตเชฟเชคเชพเชตเซ‡ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชŸเซ‹เชšเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‡ เช•เซเชฒ เช…เชฎเชฒเชจเชพ เชธเชฎเชฏ เชฆเซเชตเชพเชฐเชพ เช…เชจเซ‡ IO เชธเชฎเชฏ เชฆเซเชตเชพเชฐเชพ เช…เชฒเช—เชฅเซ€ เช…เชฒเช— เช•เชฐเชตเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡. เช†เชตเชพ เชชเซเชฐเชถเซเชจเซ‹เชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชจเซ€ เชชเชฆเซเชงเชคเชฟเช“ เชฅเซ‹เชกเซ€ เช…เชฒเช— เช›เซ‡.

เชคเชฎเชพเชฎ เช•เช‚เชชเชจเซ€เช“เชจเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเชฅเชพ เชŸเซ‹เชšเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เช›เซ‡. เชคเซ‡เชฎเชพเช‚เชจเชพ เชฅเซ‹เชกเชพ เช›เซ‡; เชเช• เช•เซเชตเซ‡เชฐเซ€ เชชเชฃ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชฅเซ€ 5-10% เชธเช‚เชธเชพเชงเชจเซ‹ เช–เชพเชฒเซ€ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชœเซ‡เชฎ เชœเซ‡เชฎ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐเชฟเชชเช•เซเชต เชฅเชคเซ‹ เชœเชพเชฏ เช›เซ‡ เชคเซ‡เชฎ, เชŸเซ‹เชช เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชจเซเช‚ เชตเชงเซเชจเซ‡ เชตเชงเซ เชฌเชฟเชจ-เชคเซเชšเซเช› เช•เชพเชฐเซเชฏ เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡. เชฌเชงเซ€ เชธเชฐเชณ เชชเชฆเซเชงเชคเชฟเช“ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เช…เชจเซ‡ เชธเซŒเชฅเซ€ เชตเชงเซ "เชญเชพเชฐเซ‡" เชตเชฟเชจเช‚เชคเซ€ "เชฎเชพเชคเซเชฐ" 3-5% เชธเช‚เชธเชพเชงเชจเซ‹ เชฒเซ‡ เช›เซ‡. เชœเซ‹ เช•เซเชฒ เชŸเซ‹เชช เช•เซเชตเซ‡เชฐเซ€เช 30-40% เช•เชฐเชคเชพ เช“เช›เซ‹ เชธเชฎเชฏ เชฒเซ‡ เช›เซ‡, เชคเซ‹ เชธเช‚เชญเชตเชคเชƒ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชเชกเชชเชฅเซ€ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชชเซเชฐเชฏเชคเซเชจเซ‹ เช•เชฐเซ€ เชฒเซ€เชงเชพ เช›เซ‡ เช…เชจเซ‡ เชนเชตเซ‡ เชชเช›เซ€เชจเชพ เชœเซ‚เชฅเชฎเชพเช‚เชฅเซ€ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เซเชตเซ‡เชฐเซ€เช เชชเชฐ เช†เช—เชณ เชตเชงเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡.
เช† เชœเซ‚เชฅเชฎเชพเช‚ เช•เซ‡เชŸเชฒเชพ เชŸเซ‹เชšเชจเชพ เชชเซเชฐเชถเซเชจเซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชตเซ‹ เชœเซ‹เชˆเช เชคเซ‡ เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ เช†เชชเชตเชพเชจเซเช‚ เชฌเชพเช•เซ€ เช›เซ‡. เชนเซเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ 10 เชฒเช‰เช‚ เช›เซเช‚, เชชเชฐเช‚เชคเซ 20 เชฅเซ€ เชตเชงเซ เชจเชนเซ€เช‚. เชนเซเช‚ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ TOP เชœเซ‚เชฅเชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เช…เชจเซ‡ เช›เซ‡เชฒเซเชฒเชพเชจเซ‹ เชธเชฎเชฏ 10 เช•เชฐเชคเชพ เชตเชงเซ เชตเช–เชค เช…เชฒเช— เชจ เชนเซ‹เชฏ. เชเชŸเชฒเซ‡ เช•เซ‡, เชœเซ‹ เช•เซเชตเซ‡เชฐเซ€ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจเชจเซ‹ เชธเชฎเชฏ 1เชฒเชพ เชธเซเชฅเชพเชจเชฅเซ€ 10เชฎเชพ เชธเซเชฅเชพเชจเซ‡ เชเชกเชชเชฅเซ€ เช˜เชŸเซ€ เชœเชพเชฏ, เชคเซ‹ เชนเซเช‚ TOP-10 เชฒเช‰เช‚ เช›เซเช‚, เชœเซ‹ เชกเซเชฐเซ‹เชช เชตเชงเซ เช•เซเชฐเชฎเชฟเช• เชนเซ‹เชฏ, เชคเซ‹ เชนเซเช‚ เชœเซ‚เชฅเชจเซเช‚ เช•เชฆ เชตเชงเชพเชฐเซ€เชจเซ‡ 15 เช…เชฅเชตเชพ 20 เช•เชฐเซ€เชถ.
เชฌเชฟเชฒเซเชกเชฐเซ‹ เชฎเชพเชŸเซ‡ B2B เชธเซ‡เชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซ€

เชฎเชงเซเชฏเชฎ เช–เซ‡เชกเซ‚เชคเซ‹

เช† เชฌเชงเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เช›เซ‡ เชœเซ‡ TOP เชชเช›เซ€ เชคเชฐเชค เชœ เช†เชตเซ‡ เช›เซ‡, เช›เซ‡เชฒเซเชฒเชพ 5-10% เชจเชพ เช…เชชเชตเชพเชฆ เชธเชฟเชตเชพเชฏ. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช† เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชฐเซเชตเชฐ เชชเซเชฐเชญเชพเชตเชจเซ‡ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชตเชงเชพเชฐเชตเชพเชจเซ€ เชคเช• เชฐเชนเซ‡เชฒเซ€ เช›เซ‡. เช† เชตเชฟเชจเช‚เชคเซ€เช“เชจเซเช‚ เชตเชœเชจ 80% เชธเซเชงเซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเซ‡เชฎเชจเซ‹ เชนเชฟเชธเซเชธเซ‹ 50% เชฅเซ€ เชตเชงเซ€ เช—เชฏเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชชเชฃ เชคเซ‡เชฎเชจเซ‡ เชตเชงเซ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชœเซ‹เชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡.

เชชเซ‚เช‚เช›เชกเซ€

เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซเชฏเซ‹ เช›เซ‡ เชคเซ‡เชฎ, เช† เชชเซเชฐเชถเซเชจเซ‹ เช…เช‚เชคเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ 5-10% เชธเชฎเชฏ เชฒเซ‡ เช›เซ‡. เชคเชฎเซ‡ เชคเซ‡เชฎเชจเชพ เชตเชฟเชถเซ‡ เชซเช•เซเชค เชคเซเชฏเชพเชฐเซ‡ เชœ เชญเซ‚เชฒเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‹ เชคเชฎเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เซเชตเซ‡เชฐเซ€ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชจ เช•เชฐเซ‹, เชคเซ‹ เชชเช›เซ€ เชคเซ‡เชฎเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚ เชชเชฃ เชธเชธเซเชคเซเช‚ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชฆเชฐเซ‡เช• เชœเซ‚เชฅเชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚?

เชนเซเช‚ SQL เช•เซเชตเซ‡เชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚ เชœเซ‡ PostgreSQL เชฎเชพเชŸเซ‡ เช†เชตเชพ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡ (เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เช›เซ‡ เช•เซ‡ เช…เชจเซเชฏ เช˜เชฃเชพ DBMS เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เช•เซเชตเซ‡เชฐเซ€ เชฒเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡)

TOP-MEDIUM-TAIL เชœเซ‚เชฅเซ‹เชจเชพ เช•เชฆเชจเชพ เช…เช‚เชฆเชพเชœ เชฎเชพเชŸเซ‡ SQL เช•เซเชตเซ‡เชฐเซ€

SELECT sum(time_top) AS sum_top, sum(time_medium) AS sum_medium, sum(time_tail) AS sum_tail
FROM
(
  SELECT CASE WHEN rn <= 20              THEN tt_percent ELSE 0 END AS time_top,
         CASE WHEN rn > 20 AND rn <= 800 THEN tt_percent ELSE 0 END AS time_medium,
         CASE WHEN rn > 800              THEN tt_percent ELSE 0 END AS time_tail
  FROM (
    SELECT total_time / (SELECT sum(total_time) FROM pg_stat_statements) * 100 AS tt_percent, query,
    ROW_NUMBER () OVER (ORDER BY total_time DESC) AS rn
    FROM pg_stat_statements
    ORDER BY total_time DESC
  ) AS t
)
AS ts

เช•เซเชตเซ‡เชฐเซ€เชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชคเซเชฐเชฃ เช•เซ‰เชฒเชฎ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชจเชพ เชฆเชฐเซ‡เช•เชฎเชพเช‚ เช† เชœเซ‚เชฅเชฎเชพเช‚เชฅเซ€ เช•เซเชตเซ‡เชฐเซ€ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เชฒเชพเช—เชคเชพ เชธเชฎเชฏเชจเซ€ เชŸเช•เชพเชตเชพเชฐเซ€ เช›เซ‡. เชตเชฟเชจเช‚เชคเซ€เชจเซ€ เช…เช‚เชฆเชฐ เชฌเซ‡ เชจเช‚เชฌเชฐเซ‹ เช›เซ‡ (เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเซ‡ 20 เช…เชจเซ‡ 800 เช›เซ‡) เชœเซ‡ เชเช• เชœเซ‚เชฅเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ เชฌเซ€เชœเชพ เชœเซ‚เชฅเชฅเซ€ เช…เชฒเช— เช•เชฐเซ‡ เช›เซ‡.

เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เช•เชพเชฐเซเชฏ เชถเชฐเซ‚ เชฅเชฏเซเช‚ เชคเซ‡ เชธเชฎเชฏเซ‡ เช…เชจเซ‡ เชนเชพเชฒเชฎเชพเช‚ เชตเชฟเชจเช‚เชคเซ€เช“เชจเชพ เชถเซ‡เชฐเชจเซ€ เชคเซเชฒเชจเชพ เช† เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡.

เชฌเชฟเชฒเซเชกเชฐเซ‹ เชฎเชพเชŸเซ‡ B2B เชธเซ‡เชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซ€

เช†เช•เซƒเชคเชฟ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชŸเซ‹เชšเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‹ เชนเชฟเชธเซเชธเซ‹ เชคเซ€เชตเซเชฐ เช˜เชŸเชพเชกเซ‹ เชฅเชฏเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ "เชฎเชงเซเชฏเชฎ เช–เซ‡เชกเซ‚เชคเซ‹" เชตเชงเซเชฏเชพ เช›เซ‡.
เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชŸเซ‹เชšเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“เชฎเชพเช‚ เชธเซเชชเชทเซเชŸ เชญเซ‚เชฒเซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชคเซ‹ เชนเชคเซ‹. เชธเชฎเชฏ เชœเชคเชพเช‚, เชฌเชพเชณเชชเชฃเชจเชพ เชฐเซ‹เช—เซ‹ เช…เชฆเซƒเชถเซเชฏ เชฅเชˆ เช—เชฏเชพ, เชŸเซ‹เชšเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‹ เชนเชฟเชธเซเชธเซ‹ เช˜เชŸเซเชฏเซ‹, เช…เชจเซ‡ เชฎเซเชถเซเช•เซ‡เชฒ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชงเซเชจเซ‡ เชตเชงเซ เชชเซเชฐเชฏเชคเซเชจเซ‹ เช•เชฐเชตเชพ เชชเชกเซเชฏเชพ.

เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‹ เชŸเซ‡เช•เซเชธเซเชŸ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชตเชฟเชจเช‚เชคเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช

SELECT * FROM (
  SELECT ROW_NUMBER () OVER (ORDER BY total_time DESC) AS rn, total_time / (SELECT sum(total_time) FROM pg_stat_statements) * 100 AS tt_percent, query
  FROM pg_stat_statements
  ORDER BY total_time DESC
) AS T
WHERE
rn <= 20 -- TOP
-- rn > 20 AND rn <= 800 -- MEDIUM
-- rn > 800  -- TAIL

เช…เชนเซ€เช‚ เชธเซŒเชฅเซ€ เชตเชงเซ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ เชคเช•เชจเซ€เช•เซ‹เชจเซ€ เชธเซ‚เชšเชฟ เช›เซ‡ เชœเซ‡เชฃเซ‡ เช…เชฎเชจเซ‡ เชŸเซ‹เชšเชจเชพ เชชเซเชฐเชถเซเชจเซ‹เชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ€ เช›เซ‡:

  • เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชชเซเชจเชƒ เชกเชฟเชเชพเช‡เชจ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชธเชพเชฎเชฏเชฟเช• เชชเซเชฐเชถเซเชจเซ‹เชจเซ‡ เชฌเชฆเชฒเซ‡ เชธเช‚เชฆเซ‡เชถ เชฌเซเชฐเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซ‚เชšเชจเชพ เชคเชฐเซเช•เชจเซเช‚ เชชเซเชจเชƒเช•เชพเชฐเซเชฏ เช•เชฐเชตเซเช‚
  • เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“ เช‰เชฎเซ‡เชฐเชตเชพ เช…เชฅเชตเชพ เชฌเชฆเชฒเชตเซ€
  • ORM เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เชถเซเชฆเซเชง SQL เชชเชฐ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
  • เช†เชณเชธเซ เชกเซ‡เชŸเชพ เชฒเซ‹เชกเชฟเช‚เช— เชคเชฐเซเช•เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเซเช‚
  • เชกเซ‡เชŸเชพ เชกเชฟเชจเซ‹เชฐเซเชฎเชฒเชพเชˆเชเซ‡เชถเชจ เชฆเซเชตเชพเชฐเชพ เช•เซ‡เชถเซ€เช‚เช—. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชŸเซ‡เชฌเชฒ เช•เชจเซ‡เช•เซเชถเชจ เช›เซ‡ เชกเชฟเชฒเชฟเชตเชฐเซ€ -> เช‡เชจเซเชตเซ‹เช‡เชธ -> เชตเชฟเชจเช‚เชคเซ€ -> เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ. เชเชŸเชฒเซ‡ เช•เซ‡, เชฆเชฐเซ‡เช• เชกเชฟเชฒเชฟเชตเชฐเซ€ เช…เชจเซเชฏ เช•เซ‹เชทเซเชŸเช•เซ‹ เชฆเซเชตเชพเชฐเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เช›เซ‡. เชฆเชฐเซ‡เช• เชตเชฟเชจเช‚เชคเซ€เชฎเชพเช‚ เชคเชฎเชพเชฎ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซ‡ เชฒเชฟเช‚เช• เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชกเชฟเชฒเชฟเชตเชฐเซ€ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชตเชฟเชจเช‚เชคเซ€เชจเซ€ เชฒเชฟเช‚เช•เชจเซ‡ เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เช•เชฐเซ€ เช›เซ‡.
  • เชธเช‚เชฆเชฐเซเชญ เชชเซเชธเซเชคเช•เซ‹ เชธเชพเชฅเซ‡ เชธเซเชฅเชฟเชฐ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซ‡ เช•เซ‡เชถ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชญเชพเช—เซเชฏเซ‡ เชœ เชฌเชฆเชฒเชพเชคเชพ เช•เซ‹เชทเซเชŸเช•เซ‹.

เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชชเซเชฐเชญเชพเชตเชถเชพเชณเซ€ เชชเซเชจเชƒเชกเชฟเชเชพเช‡เชจ เชธเชฎเชพเชจ เชนเชคเชพ, เชชเชฐเช‚เชคเซ เชคเซ‡เช“ เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เชกเชจเชพ 5-10% เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชจเซเชฏเชพเชฏเซ€ เชนเชคเชพ. เชธเชฎเชฏ เชœเชคเชพเช‚, เชเช•เซเชเซ‹เชธเซเชŸ เชจเชพเชจเซ‹ เช…เชจเซ‡ เชจเชพเชจเซ‹ เชฌเชจเซเชฏเซ‹, เช…เชจเซ‡ เชตเชงเซเชจเซ‡ เชตเชงเซ เช—เช‚เชญเซ€เชฐ เชชเซเชจเชƒเชกเชฟเชเชพเช‡เชจเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ€.

เชชเช›เซ€ เช…เชฎเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“เชจเชพ เชฌเซ€เชœเชพ เชœเซ‚เชฅ เชคเชฐเชซ เชงเซเชฏเชพเชจ เช†เชชเซเชฏเซเช‚ - เชฎเชงเซเชฏเชฎ เช–เซ‡เชกเซ‚เชคเซ‹เชจเชพ เชœเซ‚เชฅ. เชคเซ‡เชฎเชพเช‚ เชฌเซ€เชœเชพ เช˜เชฃเชพ เชชเซเชฐเชถเซเชจเซ‹ เช›เซ‡ เช…เชจเซ‡ เชเชตเซเช‚ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เช†เช–เชพ เชœเซ‚เชฅเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช˜เชฃเซ‹ เชธเชฎเชฏ เชฒเชพเช—เชถเซ‡. เชœเซ‹ เช•เซ‡, เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ€ เช•เซเชตเซ‡เชฐเซ€เช เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เช…เชจเซ‡ เช˜เชฃเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชตเชฟเชตเชฟเชง เชญเชฟเชจเซเชจเชคเชพเช“เชฎเชพเช‚ เชกเชเชจเซ‡เช• เชตเช–เชค เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชฅเชˆ เชนเชคเซ€. เช…เชนเซ€เช‚ เช•เซ‡เชŸเชฒเชพเช• เชฒเชพเช•เซเชทเชฃเชฟเช• เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช›เซ‡ เชœเซ‡ เช…เชฎเซ‡ เชกเชเชจเซ‡เช• เชธเชฎเชพเชจ เช•เซเชตเซ‡เชฐเซ€เช เชชเชฐ เชฒเชพเช—เซ เช•เชฐเซเชฏเชพ เช›เซ‡ เช…เชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เซเชตเซ‡เชฐเซ€เชเชจเชพ เชฆเชฐเซ‡เช• เชœเซ‚เชฅเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ 3-5% เชฆเซเชตเชพเชฐเชพ เช…เชจเชฒเซ‹เชก เช•เชฐเซเชฏเซ‹ เช›เซ‡.

  • COUNT เช…เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชŸเซ‡เชฌเชฒ เชธเซเช•เซ‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซ€ เชนเชพเชœเชฐเซ€ เชคเชชเชพเชธเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, EXISTS เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชตเชพ เชฒเชพเช—เซเชฏเซ‹
  • DISTINCT เชฅเซ€ เช›เซเชŸเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเซเชฏเซ‹ (เช•เซ‹เชˆ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ‡เชธเซ€เชชเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเชฎเซ‡ เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ 10-100 เชตเช–เชค เชเชกเชชเซ€ เช•เชฐเซ€เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช›เซเชŸเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹).

    เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชกเชฟเชฒเชฟเชตเชฐเซ€เชจเชพ เชฎเซ‹เชŸเชพ เชŸเซ‡เชฌเชฒเชฎเชพเช‚เชฅเซ€ เชฌเชงเชพ เชกเซเชฐเชพเช‡เชตเชฐเซ‹ เชชเชธเช‚เชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซเชตเซ‡เชฐเซ€ (เชกเชฟเชฒเชฟเชตเชฐเซ€) เชจเซ‡ เชฌเชฆเชฒเซ‡

    SELECT DISTINCT P.ID, P.FIRST_NAME, P.LAST_NAME
    FROM DELIVERY D JOIN PERSON P ON D.DRIVER_ID = P.ID
    

    เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชจเชพเชจเชพ เชŸเซ‡เชฌเชฒ เชชเชฐ เชเช• เชชเซเชฐเชถเซเชจ เช•เชฐเซเชฏเซ‹ PERSON

    SELECT P.ID, P.FIRST_NAME, P.LAST_NAME
    FROM PERSON
    WHERE EXISTS(SELECT D.ID FROM DELIVERY WHERE D.DRIVER_ID = P.ID)
    

    เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช…เชฎเซ‡ เชธเชนเชธเช‚เชฌเช‚เชงเชฟเชค เชธเชฌเช•เซเชตเซ‡เชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ 10 เช—เชฃเชพเชฅเซ€ เชตเชงเซเชจเซ€ เชเชกเชช เช†เชชเซ‡ เช›เซ‡.

  • เช˜เชฃเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, COUNT เชเช•เชธเชพเชฅเซ‡ เช›เซ‹เชกเซ€ เชฆเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ เช…เชจเซ‡
    เช…เช‚เชฆเชพเชœเชฟเชค เชฎเซ‚เชฒเซเชฏเชจเซ€ เช—เชฃเชคเชฐเซ€ เชฆเซเชตเชพเชฐเชพ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡
  • ะฒะผะตัั‚ะพ
    UPPER(s) LIKE JOHN%โ€™ 
    

    เชตเชพเชชเชฐเชตเซ

    s ILIKE โ€œJohn%โ€
    

เชฆเชฐเซ‡เช• เชšเซ‹เช•เซเช•เชธ เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ เช•เซเชฏเชพเชฐเซ‡เช• 3-1000 เชตเช–เชค เชเชกเชชเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เชชเซเชฐเชญเชพเชตเชถเชพเชณเซ€ เชชเซเชฐเชฆเชฐเซเชถเชจ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เช…เชฎเชจเซ‡ เชเชตเซเช‚ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เช•เซเชตเซ‡เชฐเซ€ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ 10 ms เชฒเซ‡ เช›เซ‡, เชœเซ‡ 3เชœเซ€ เชธเซ‹ เชธเซŒเชฅเซ€ เชญเชพเชฐเซ‡ เช•เซเชตเซ‡เชฐเซ€เชฎเชพเช‚เชฅเซ€ เชเช• เช›เซ‡ เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฒเซ‹เชก เชŸเชพเชˆเชฎเชจเชพ เชเช• เชŸเช•เชพเชจเซ‹ เชธเซ‹ เชญเชพเช— เชฒเซ‡ เช›เซ‡ เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชจเซ‹ เช•เซ‹เชˆ เช…เชฐเซเชฅ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชธเชฎเชพเชจ เชชเซเชฐเช•เชพเชฐเชจเชพ เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เชœเซ‚เชฅเชฎเชพเช‚ เชธเชฎเชพเชจ เชฐเซ‡เชธเซ€เชชเซ€ เชฒเชพเช—เซ เช•เชฐเซ€เชจเซ‡, เช…เชฎเซ‡ เชฅเซ‹เชกเชพ เชŸเช•เชพ เชชเชพเช›เชพ เชœเซ€เชคเซเชฏเชพ. เชคเชฎเชพเชฎ เชธเซ‡เช‚เช•เชกเซ‹ เช•เซเชตเซ‡เชฐเซ€เชเชจเซ€ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชฎเชฏ เชจ เชฌเช—เชพเชกเซ‡ เชคเซ‡ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช˜เชฃเซ€ เชธเชฐเชณ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชฒเช–เซ€ เช›เซ‡ เชœเซ‡ เชธเชฎเชพเชจ เชชเซเชฐเช•เชพเชฐเชจเซ€ เช•เซเชตเซ‡เชฐเซ€ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชฐเซ‡เช—เซเชฏเซเชฒเชฐ เชเช•เซเชธเชชเซเชฐเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เชœเซ‚เชฅเซ‹เชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชถเซ‹เชงเชตเชพเชฅเซ€ เช…เชฎเชจเซ‡ เชธเชพเชงเชพเชฐเชฃ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชธเชพเชฅเซ‡ เช…เชฎเชพเชฐเชพ เชชเซเชฐเชฆเชฐเซเชถเชจเชฎเชพเช‚ เชตเชงเซ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เชฎเชณเซ€.

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเซ‡ เชคเซเชฐเชฃ เชตเชฐเซเชทเชฅเซ€ เชธเชฎเชพเชจ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เชธเชฐเซ‡เชฐเชพเชถ เชฆเซˆเชจเชฟเช• เชญเชพเชฐ เชฒเช—เชญเช— 30% เช›เซ‡, เชถเชฟเช–เชฐเซ‹เชฎเชพเช‚ เชคเซ‡ 70% เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ‡ เช›เซ‡. เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ, เชคเซ‡เชฎเชœ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚, เช†เชถเชฐเซ‡ 10 เช—เชฃเซ‹ เชตเชงเชพเชฐเซ‹ เชฅเชฏเซ‹ เช›เซ‡. เช…เชจเซ‡ เช† เชคเชฎเชพเชฎ TOP-MEDIUM เชตเชฟเชจเช‚เชคเซ€เช“เชจเชพ เชธเชฎเชพเชจ เชœเซ‚เชฅเซ‹เชจเซ€ เชธเชคเชค เชฆเซ‡เช–เชฐเซ‡เช– เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ. TOP เชœเซ‚เชฅเชฎเชพเช‚ เชจเชตเซ€ เชตเชฟเชจเช‚เชคเซ€ เชฆเซ‡เช–เชพเชฏ เช•เซ‡ เชคเชฐเชค เชœ เช…เชฎเซ‡ เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช เช›เซ€เช. เช…เชฎเซ‡ เช•เซเชตเซ‡เชฐเซ€ เชเชจเชพเชฒเชฟเชธเชฟเชธ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เช เชตเชพเชกเชฟเชฏเชพเชฎเชพเช‚ เชเช•เชตเชพเชฐ เชฎเชงเซเชฏเชฎ เชœเซ‚เชฅเชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช•เชฐเซ€เช เช›เซ€เช. เชœเซ‹ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชจเชตเซ€ เช•เซเชตเซ‡เชฐเซ€ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‡ เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเซเช‚, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชเชกเชชเชฅเซ€ เชฌเชฆเชฒเซ€เช เช›เซ€เช. เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เช†เชชเชฃเซ‡ เชจเชตเซ€ เช“เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชชเชฆเซเชงเชคเชฟเช“ เชถเซ‹เชงเซ€เช เช›เซ€เช เชœเซ‡ เชเช•เชธเชพเชฅเซ‡ เช…เชจเซ‡เช• เชชเซเชฐเชถเซเชจเซ‹ เชชเชฐ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช…เชฎเชพเชฐเซ€ เช†เช—เชพเชนเซ€ เชฎเซเชœเชฌ, เชตเชฐเซเชคเชฎเชพเชจ เชธเชฐเซเชตเชฐ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชฌเซ€เชœเชพ 3-5 เช—เชฃเชพ เชตเชงเชพเชฐเชพเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชถเซ‡. เชธเชพเชšเซเช‚, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช…เชฎเชพเชฐเซ€ เชธเซเชฒเซ€เชตเชฎเชพเช‚ เชตเชงเซ เชเช• เชชเชพเชธเชพ เช›เซ‡ - เช…เชฎเซ‡ เชนเชœเซ เชชเชฃ SELECT เช•เซเชตเซ‡เชฐเซ€เชเชจเซ‡ เช…เชฐเซ€เชธเชพเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ€ เชจเชฅเซ€, เชœเซ‡เชฎ เช•เซ‡ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เช† เชธเชญเชพเชจเชชเชฃเซ‡ เช•เชฐเชคเชพ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ "เชญเชพเชฐเซ‡ เช†เชฐเซเชŸเชฟเชฒเชฐเซ€" เชšเชพเชฒเซ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ "เชธเซเชฎเชพเชฐเซเชŸ" เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจเชจเซ€ เชถเช•เซเชฏเชคเชพเช“เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช–เชคเชฎ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช.
เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เช•เชพเชฐเซเชฏ เชชเชฐ เชจเชฟเชฐเซเชฃเชพเชฏเช• เชฆเซ‡เช–เชพเชต เชตเชฐเซเชŸเชฟเช•เชฒ เชธเซเช•เซ‡เชฒเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชจเชฟเชทเซเชฃเชพเชคเซ‹เชจเซ‹ เชธเชฎเชฏ เชฌเช—เชพเชกเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เชตเชงเซ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชธเชฐเซเชตเชฐ เช–เชฐเซ€เชฆเซ‹. เชธเชฐเซเชตเชฐเชจเซ‹ เช–เชฐเซเชš เชเชŸเชฒเซ‹ เชตเชงเชพเชฐเซ‡ เชจ เชชเชฃ เชนเซ‹เชˆ เชถเช•เซ‡, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชนเชœเซ เชธเซเชงเซ€ เชตเชฐเซเชŸเชฟเช•เชฒ เชธเซเช•เซ‡เชฒเชฟเช‚เช—เชจเซ€ เชฎเชฐเซเชฏเชพเชฆเชพเช“ เชชเซ‚เชฐเซ€ เช•เชฐเซ€ เชจเชฅเซ€. เชœเซ‹ เช•เซ‡, เชฎเชพเชคเซเชฐ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ 10 เช—เชฃเซ‹ เชตเชงเชพเชฐเซ‹ เชฅเชฏเซ‹ เช›เซ‡. เช˜เชฃเชพ เชตเชฐเซเชทเซ‹ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชตเชงเซ€ เช›เซ‡ เช…เชจเซ‡ เชนเชตเซ‡ เชตเชงเซ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เช›เซ‡. เช•เซ‡เชถเซ€เช‚เช— เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ, เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชฐเชนเซ‡เชฒเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เช“เช›เซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เช…เชจเซ‡ เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เชตเชฟเชจเช‚เชคเซ€เช“เชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชชเซเชฐเชตเซ‡เช— เช—เซเชฃเชพเช‚เช• เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เชฌเซ€เชœเชพ 5 เชตเชกเซ‡ เช—เซเชฃเชพเช•เชพเชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชคเซ‡เชฅเซ€, เชธเซŒเชฅเซ€ เชฐเซ‚เชขเชฟเชšเซเชธเซเชค เช…เช‚เชฆเชพเชœเซ‹ เช…เชจเซเชธเชพเชฐ, เช…เชฎเซ‡ เช•เชนเซ€ เชถเช•เซ€เช เช•เซ‡ เชชเซเชฐเชตเซ‡เช—เช• 50 เช—เชฃเซ‹ เช…เชฅเชตเชพ เชตเชงเซ เชนเชคเซ‹. เชธเชฐเซเชตเชฐเชจเซ‡ เชตเชฐเซเชŸเชฟเช•เชฒเซ€ เชธเซเชตเชฟเช‚เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ 50 เช—เชฃเซ‹ เชตเชงเซ เช–เชฐเซเชš เชฅเชถเซ‡. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเซเช‚ เช•เซ‡ เชเช•เชตเชพเชฐ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซ‹ เชคเซ‡ เชนเช‚เชฎเซ‡เชถเชพเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชญเชพเชกเซ‡ เช†เชชเซ‡เชฒเชพ เชธเชฐเซเชตเชฐเชจเซเช‚ เชฌเชฟเชฒ เชฆเชฐ เชฎเชนเชฟเชจเซ‡ เช†เชตเซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹