PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"

เดฐเดพเดœเตเดฏเดคเตเดคเตเดŸเดจเต€เดณเดฎเตเดณเตเดณ เดธเต†เดฏเดฟเตฝเดธเต เด“เดซเต€เดธเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด†เดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดฎเดพเดจเต‡เดœเตผเดฎเดพเดฐเตเดŸเต† เดฑเต†เด•เตเด•เต‹เตผเดกเต เดžเด™เตเด™เดณเตเดŸเต† CRM เดธเดฟเดธเตเดฑเตเดฑเด‚ เดชเตเดฐเดคเดฟเดฆเดฟเดจเด‚ เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เด•เต‹เตบเดŸเดพเด•เตเดฑเตเดฑเตเด•เตพ - เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด•เตเดฒเดฏเดจเตเดฑเตเด•เดณเตเดฎเดพเดฏเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดตเดธเตเดคเตเดคเด•เตพ. เด‡เดคเดฟเดจเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เด’เดฐเต เด•เตเดฒเดฏเดจเตเดฑเต เด•เดฃเตเดŸเต†เดคเตเดคเดฃเด‚, เดตเต†เดฏเดฟเดฒเดคเตเดคเต เดตเดณเดฐเต† เดตเต‡เด—เดคเตเดคเดฟเตฝ. เด‡เดคเต เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‡เดฐเดฟเดฒเดพเดฃเต.

เด…เดคเดฟเดจเดพเตฝ, เดเดฑเตเดฑเดตเตเด‚ เด•เต‚เดŸเตเดคเตฝ เดฒเต‹เดกเตเดšเต†เดฏเตเดค เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเดฒเตŠเดจเตเดจเดฟเดฒเต† โ€œเด•เดจเดคเตเดคโ€ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดตเต€เดฃเตเดŸเตเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เด…เดคเดฟเดถเดฏเดฟเด•เตเด•เดพเดจเดฟเดฒเตเดฒ - เดจเดฎเตเดฎเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ VLSI เด•เต‹เตผเดชเตเดชเดฑเต‡เดฑเตเดฑเต เด…เด•เตเด•เต—เดฃเตเดŸเต, เดžเดพเตป "เดฎเตเด•เดณเดฟเตฝ" เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เดชเต‡เดฐเต เดชเตเดฐเด•เดพเดฐเด‚ "เดฆเตเดฐเตเดค" เดคเดฟเดฐเดฏเดฒเดฟเดจเดพเดฏเดฟ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเด• เด“เตผเด—เดจเตˆเดธเต‡เดทเตป เด•เดพเตผเดกเตเด•เตพเด•เตเด•เดพเดฏเดฟ.

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

0: เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เดŽเดจเตเดคเดพเดฃเต เดตเต‡เดฃเตเดŸเดคเต?

PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"[เด•เต†.เดกเดฟ.เดชเดฟ.เดตเดฟ เด‡เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต]

เดชเต‡เดฐเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต "เดฆเตเดฐเตเดค" เดคเดฟเดฐเดฏเดฒเดฟเดจเต† เด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดŽเดจเตเดคเดพเดฃเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต? เด’เดฐเต เด‰เดชเดธเตโ€ŒเดŸเตเดฐเดฟเด‚เด—เดฟเดจเดพเดฏเตเดณเตเดณ โ€œเดธเดคเตเดฏเดธเดจเตเดงเดฎเดพเดฏโ€ เดคเดฟเดฐเดฏเดฒเดพเดฏเดฟ เด‡เดคเต เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เดฎเดพเดฑเดฟเดฒเตเดฒ ... LIKE '%ั€ะพะทะฐ%' - เด•เดพเดฐเดฃเด‚ เดซเดฒเดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต 'ะ ะพะทะฐะปะธั' ะธ 'ะœะฐะณะฐะทะธะฝ ะ ะพะทะฐ'เดชเด•เตเดทเต‡ 'ะ“ั€ะพะทะฐ' เดชเต‹เดฒเตเด‚ 'ะ”ะพะผ ะ”ะตะดะฐ ะœะพั€ะพะทะฐ'.

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

1: เดšเตเดฎเดคเดฒ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•

เด…เดคเดฟเดฒเตเดชเดฐเดฟเดฏเดพเดฏเดฟ, เด’เดฐเต เดตเตเดฏเด•เตเดคเดฟ เดชเตเดฐเดคเตเดฏเต‡เด•เดฎเดพเดฏเดฟ เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เดฟเดฒเตเดฒ 'ั€ะพะท ะผะฐะณะฐะท', เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด“เดฐเต‹ เดตเดพเด•เตเด•เตเด‚ เดชเตเดฐเดฟเดซเดฟเด•เตโ€Œเดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเดฟเดฐเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดฒเตเดฒ, เดฎเตเดฎเตเดชเดคเตเดคเต† เดตเดพเด•เตเด•เดฟเดจเตเดฑเต† เดตเต‡เด—เดคเตเดคเดฟเดฒเตเดณเตเดณ เดธเต‚เดšเดจเดฏเต‹เดŸเต เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เดฎเตเดฎเตเดชเดคเตเดคเต‡เดคเดฟเดจเต† เดฒเด•เตเดทเตเดฏเดคเตเดคเต‹เดŸเต† "เด•เตเดฑเดšเตเดšเต" เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต - เดเดคเต เดธเต†เตผเดšเตเดšเต เดŽเดžเตเดšเดฟเดจเตเด‚ เด‡เดคเต เดŽเด™เตเด™เดจเต† เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเต‹เด•เตเด•เตเด•.

เดœเดจเดฑเตฝ เดถเดฐเดฟ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เด†เดตเดถเตเดฏเด•เดคเด•เตพ เดฐเต‚เดชเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเต เดชเด•เตเดคเดฟเดฏเดฟเดฒเดงเดฟเด•เด‚ เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฃเต. เดšเดฟเดฒเดชเตเดชเต‹เตพ เดถเตเดฐเดฆเตเดงเดพเดชเต‚เตผเดตเดฎเดพเดฏ เด‰เดชเดฏเต‹เด—เด‚ เด•เต‡เดธเต เดตเดฟเดถเด•เดฒเดจเด‚ เดซเดฒเดคเตเดคเต† เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เดธเตเดตเดพเดงเต€เดจเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เด’เดฐเต เด…เดฎเต‚เตผเดคเตเดค เดกเต†เดตเดฒเดชเตเดชเตผ เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต?

1.0: เดฌเดพเดนเตเดฏ เดคเดฟเดฐเดฏเตฝ เดŽเดžเตเดšเดฟเตป

เด“, เดคเดฟเดฐเดฏเตฝ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต, เดŽเดจเดฟเด•เตเด•เต เด’เดจเตเดจเตเด‚ เดšเต†เดฏเตเดฏเดพเตป เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเดฟเดฒเตเดฒ - เดจเดฎเตเด•เตเด•เต เด…เดคเต devops-เดจเต เดจเตฝเด•เดพเด‚! เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เด’เดฐเต เดธเต†เตผเดšเตเดšเต เดŽเดžเตเดšเดฟเตป เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เด…เดตเดฐเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•: เดธเตเดซเดฟเตปเด•เตเดธเต, เด‡เดฒเดพเดธเตเดฑเตเดฑเดฟเด•เต เดธเต†เตผเดšเตเดšเต,...

เดธเดฟเตปเด•เตเดฐเตŠเดฃเตˆเดธเต‡เดทเดจเตเด‚ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดŸเต† เดตเต‡เด—เดคเดฏเตเด‚ เด•เดฃเด•เตเด•เดฟเดฒเต†เดŸเตเดคเตเดคเต เด…เดงเตเดตเดพเดจเด‚-เด‡เดจเตเดฑเตปเดธเต€เดตเต เด†เดฃเต†เด™เตเด•เดฟเดฒเตเด‚ เด’เดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เด“เดชเตเดทเตป. เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด“เดฐเต‹ เด•เตเดฒเดฏเดจเตเดฑเดฟเดจเตเด‚ เด…เดตเดจเตเดฑเต† เด…เด•เตเด•เต—เดฃเตเดŸเต เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดฟเดจเตเดณเตเดณเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดคเดฟเดฐเดฏเตฝ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต. เดกเดพเดฑเตเดฑเดฏเตเด•เตเด•เต เด‰เดฏเตผเดจเตเดจ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดฑเตเดฑเดฟ เด‰เดฃเตเดŸเต - เดฎเดพเดจเต‡เดœเตผ เด‡เดชเตเดชเต‹เตพ เด•เดพเตผเดกเดฟเตฝ เดจเตฝเด•เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ 'ะœะฐะณะฐะทะธะฝ ะ ะพะทะฐ', เดชเดฟเดจเตเดจเต€เดŸเต 5-10 เดธเต†เด•เตเด•เตปเดกเตเด•เตพเด•เตเด•เต เดถเต‡เดทเด‚ เด…เดตเตป เดคเดจเตเดฑเต† เด‡เดฎเต†เดฏเดฟเตฝ เด…เดตเดฟเดŸเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดฎเดฑเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เด…เดคเต เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เดถเดฐเดฟเดฏเดพเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เด…เดฆเตเดฆเต‡เดนเด‚ เด‡เดคเดฟเดจเด•เด‚ เด“เตผเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเด‚.

เด…เดคเดฟเดจเดพเตฝ - เดจเดฎเตเด•เตเด•เต "เดจเต‡เดฐเดฟเดŸเตเดŸเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ" เดคเดฟเดฐเดฏเตเด•. เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, PostgreSQL เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด’เดฐเต เด“เดชเตเดทเตป เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ - เดžเด™เตเด™เตพ เด…เดต เดจเต‹เด•เตเด•เตเด‚.

1.1: "เดธเดคเตเดฏเดธเดจเตเดงเดฎเดพเดฏ" เด‰เดชเดธเตโ€ŒเดŸเตเดฐเดฟเด‚เด—เต

"เดธเดฌเตโ€ŒเดธเตเดŸเตเดฐเดฟเด‚เด—เต" เดŽเดจเตเดจ เดตเดพเด•เตเด•เต เดžเด™เตเด™เตพ เดฎเตเดฑเตเด•เต† เดชเดฟเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดธเดฌเตโ€Œเดธเตโ€ŒเดŸเตเดฐเดฟเด‚เด—เดฟเดฒเต‚เดŸเต†เดฏเตเดณเตเดณ เด‡เตปเดกเต†เด•เตโ€Œเดธเต เดคเดฟเดฐเดฏเดฒเดฟเดจเต (เดธเดพเดงเดพเดฐเดฃ เดŽเด•เตโ€Œเดธเตโ€Œเดชเตเดฐเดทเดจเตเด•เตพ เดตเดดเดฟ เดชเต‹เดฒเตเด‚!) เด’เดฐเต เดฎเดฟเด•เดšเตเดšเดคเตเดฃเตเดŸเต เดฎเตŠเดกเตเดฏเต‚เตพ pg_trgm! เด…เดชเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดถเดฐเดฟเดฏเดพเดฏเดฟ เด…เดŸเตเด•เตเด•เดพเตป เด…เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเดฟเด•เดฏเตเดณเตเดณเต‚.

เดฎเต‹เดกเตฝ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เดพเตป เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฒเต‡เดฑเตเดฑเต เดŽเดŸเตเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚:

CREATE TABLE firms(
  id
    serial
      PRIMARY KEY
, name
    text
);

เดฏเดฅเดพเตผเดคเตเดฅ เดธเตเดฅเดพเดชเดจเด™เตเด™เดณเตเดŸเต† 7.8 เดฆเดถเดฒเด•เตเดทเด‚ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดžเด™เตเด™เตพ เด…เดตเดฟเดŸเต† เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด…เดตเดฏเต† เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

CREATE EXTENSION pg_trgm;
CREATE INDEX ON firms USING gin(lower(name) gin_trgm_ops);

เด‡เดจเตเดฑเตผเดฒเต€เดจเดฟเดฏเตผ เดคเดฟเดฐเดฏเดฒเดฟเดจเดพเดฏเดฟ เด†เดฆเตเดฏเดคเตเดคเต† 10 เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดจเต‹เด•เตเด•เดพเด‚:

SELECT
  *
FROM
  firms
WHERE
  lower(name) ~ ('(^|s)' || 'ั€ะพะทะฐ')
ORDER BY
  lower(name) ~ ('^' || 'ั€ะพะทะฐ') DESC -- ัะฝะฐั‡ะฐะปะฐ "ะฝะฐั‡ะธะฝะฐัŽั‰ะธะตัั ะฝะฐ"
, lower(name) -- ะพัั‚ะฐะปัŒะฝะพะต ะฟะพ ะฐะปั„ะฐะฒะธั‚ัƒ
LIMIT 10;

PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"
[explain.tensor.ru-เตฝ เด•เดพเดฃเตเด•]

เดถเดฐเดฟ, เด…เดคเต... 26เดŽเด‚เดŽเดธเต, 31เดŽเด‚เดฌเดฟ เดฑเต€เดกเต เดกเดพเดฑเตเดฑเดฏเตเด‚ 1.7K-เตฝ เด•เต‚เดŸเตเดคเตฝ เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดค เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเด‚ - 10 เดคเดฟเดฐเดžเตเดžเดตเดฏเตเด•เตเด•เต. เด“เดตเตผเดนเต†เดกเต เดšเต†เดฒเดตเตเด•เตพ เดตเดณเดฐเต† เด•เต‚เดŸเตเดคเดฒเดพเดฃเต, เด•เต‚เดŸเตเดคเตฝ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‡เดฒเตเดฒเต‡?

1.2: เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดชเตเดฐเด•เดพเดฐเด‚ เดคเดฟเดฐเดฏเดฃเต‹? เด‡เดคเต FTS เด†เดฃเต!

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, PostgreSQL เดตเดณเดฐเต† เดถเด•เตเดคเดฎเดพเดฃเต เดฎเตเดดเตเดตเตป เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดคเดฟเดฐเดฏเตฝ เดŽเดžเตเดšเดฟเตป (เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดตเดพเดšเด• เดคเดฟเดฐเดฏเตฝ), เดคเดฟเดฐเดšเตเดšเดฟเตฝ เดชเตเดฐเดฟเดซเดฟเด•เตโ€Œเดธเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เด‰เตพเดชเตเดชเต†เดŸเต†. เด’เดฐเต เดฎเดฟเด•เดšเตเดš เด“เดชเตเดทเตป, เดจเดฟเด™เตเด™เตพ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ! เดจเดฎเตเด•เตเด•เต เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚:

CREATE INDEX ON firms USING gin(to_tsvector('simple'::regconfig, lower(name)));

SELECT
  *
FROM
  firms
WHERE
  to_tsvector('simple'::regconfig, lower(name)) @@ to_tsquery('simple', 'ั€ะพะทะฐ:*')
ORDER BY
  lower(name) ~ ('^' || 'ั€ะพะทะฐ') DESC
, lower(name)
LIMIT 10;

PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"
[explain.tensor.ru-เตฝ เด•เดพเดฃเตเด•]

เด‡เดตเดฟเดŸเต† เด…เดจเตเดตเต‡เดทเดฃ เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดธเดฎเดพเดจเตเดคเดฐเดตเตฝเด•เตเด•เดฐเดฃเด‚ เดžเด™เตเด™เดณเต† เด…เตฝเดชเตเดชเด‚ เดธเดนเดพเดฏเดฟเดšเตเดšเต, เดธเดฎเดฏเด‚ เดชเด•เตเดคเดฟเดฏเดพเดฏเดฟ เด•เตเดฑเดšเตเดšเต 11 เดฎเดฟ. เดžเด™เตเด™เตพเด•เตเด•เต 1.5 เดฎเดŸเด™เตเด™เต เด•เตเดฑเดตเต เดตเดพเดฏเดฟเด•เตเด•เต‡เดฃเตเดŸเดฟ เดตเดจเตเดจเต - เดฎเตŠเดคเตเดคเดคเตเดคเดฟเตฝ 20MB. เดŽเดจเตเดจเดพเตฝ เด‡เดตเดฟเดŸเต†, เด•เตเดฑเดตเต, เดจเดฒเตเดฒเดคเต, เด•เดพเดฐเดฃเด‚ เดจเดฎเตเดฎเตพ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจ เดตเต‹เดณเดฟเดฏเด‚ เดตเดฒเตเดคเดพเดฏเดคเดฟเดจเดพเตฝ, เด’เดฐเต เด•เดพเดทเต† เดจเดทเตเดŸเดชเตเดชเต†เดŸเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เด•เต‚เดŸเตเดคเดฒเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† เดกเดฟเดธเตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด“เดฐเต‹ เด…เดงเดฟเด• เดชเต‡เดœเตเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เตเดณเตเดณ เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ "เดฌเตเดฐเต‡เด•เตเด•เตเด•เตพ" เด†เดฃเต.

1.3: เด‡เดชเตเดชเต‹เดดเตเด‚ เด‡เดทเตเดŸเดฎเดพเดฃเต‹?

เดฎเตเดฎเตเดชเดคเตเดคเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดจเดฒเตเดฒเดคเดพเดฃเต, เดชเด•เตเดทเต‡ เด’เดฐเต เดฆเดฟเดตเดธเด‚ เดจเต‚เดฑเดพเดฏเดฟเดฐเด‚ เดคเดตเดฃ เดตเดฒเดฟเดšเตเดšเดพเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดคเต เดตเดฐเต‚ 2TB เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเด•เตเด•เตเด•. เดฎเดฟเด•เดšเตเดš เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต, เดชเด•เตเดทเต‡ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดญเดพเด—เตเดฏเดฎเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดกเดฟเดธเตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต. เด…เดคเตเด•เตŠเดฃเตเดŸเต เดšเต†เดฑเตเดคเดพเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚.

เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดŽเดจเตเดคเดพเดฃเต เด•เดพเดฃเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด“เตผเด•เตเด•เดพเด‚ เด†เดฆเตเดฏเด‚ "เด‡เดคเดฟเตฝ เดคเตเดŸเด™เตเด™เตเดจเตเดจเต...". เด…เดคเดฟเดจเดพเตฝ เด‡เดคเต เด…เดคเดฟเดจเตเดฑเต† เดถเตเดฆเตเดงเดฎเดพเดฏ เดฐเต‚เดชเดคเตเดคเดฟเดฒเดพเดฃเต เดชเตเดฐเดฟเดซเดฟเด•เตเดธเต เดคเดฟเดฐเดฏเตฝ เดธเดนเดพเดฏเดคเตเดคเต‹เดŸเต† text_pattern_ops! เดžเด™เตเด™เตพ เดคเดฟเดฐเดฏเตเดจเตเดจ 10 เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดตเดฐเต† "เดฎเดคเดฟเดฏเดพเดฏเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ" เดฎเดพเดคเตเดฐเด‚, FTS เดคเดฟเดฐเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด…เดต เดตเดพเดฏเดฟเดšเตเดšเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

CREATE INDEX ON firms(lower(name) text_pattern_ops);

SELECT
  *
FROM
  firms
WHERE
  lower(name) LIKE ('ั€ะพะทะฐ' || '%')
LIMIT 10;

PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"
[explain.tensor.ru-เตฝ เด•เดพเดฃเตเด•]

เดฎเดฟเด•เดšเตเดš เดชเตเดฐเด•เดŸเดจเด‚ - เด†เด•เต† 0.05ms, 100KB-เดฏเดฟเตฝ เด…เตฝเดชเตเดชเด‚ เด•เต‚เดŸเตเดคเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•! เดจเดฎเตเดฎเตพ เดฎเดพเดคเตเดฐเด‚ เดฎเดฑเดจเตเดจเต เดชเต‡เดฐเต เดชเตเดฐเด•เดพเดฐเด‚ เด…เดŸเตเด•เตเด•เตเด•เดซเดฒเด™เตเด™เดณเดฟเตฝ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดจเดทเตเดŸเดชเตเดชเต†เดŸเดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป:

SELECT
  *
FROM
  firms
WHERE
  lower(name) LIKE ('ั€ะพะทะฐ' || '%')
ORDER BY
  lower(name)
LIMIT 10;

PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"
[explain.tensor.ru-เตฝ เด•เดพเดฃเตเด•]

เด“, เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‡เดชเตเดชเต‹เตพ เด…เดคเตเดฐ เดฎเดจเต‹เดนเดฐเดฎเดฒเตเดฒ - เด’เดฐเต เดธเต‚เดšเดฟเด• เด‰เดฃเตเดŸเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดธเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด…เดคเดฟเดจเต† เดฎเดฑเดฟเด•เดŸเด•เตเด•เตเดจเตเดจเต ... เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด‡เดคเต เดฎเตเดฎเตเดชเดคเตเดคเต† เด“เดชเตเดทเดจเต‡เด•เตเด•เดพเตพ เดชเดฒเดฎเดŸเด™เตเด™เต เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฃเต, เดชเด•เตเดทเต‡ ...

1.4: "เด’เดฐเต เดซเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเด•"

เดŽเดจเตเดจเดพเตฝ เดถเตเดฐเต‡เดฃเดฟ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดคเดฟเดฐเดฏเดพเดจเตเด‚ เดธเดพเดงเดพเดฐเดฃ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดธเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเต‚เดšเดฟเด•เดฏเตเดฃเตเดŸเต - เดธเดพเดงเดพเดฐเดฃ btree!

CREATE INDEX ON firms(lower(name));

เด…เดคเดฟเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฎเดพเดคเตเดฐเด‚ "เดธเตเดตเดฎเต‡เดงเดฏเดพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•":

SELECT
  *
FROM
  firms
WHERE
  lower(name) >= 'ั€ะพะทะฐ' AND
  lower(name) <= ('ั€ะพะทะฐ' || chr(65535)) -- ะดะปั UTF8, ะดะปั ะพะดะฝะพะฑะฐะนั‚ะพะฒั‹ั… - chr(255)
ORDER BY
   lower(name)
LIMIT 10;

PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"
[explain.tensor.ru-เตฝ เด•เดพเดฃเตเด•]

เดฎเดฟเด•เดšเตเดšเดคเต - เดธเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดตเดฟเดญเดต เด‰เดชเดญเต‹เด—เด‚ "เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ" เดคเตเดŸเดฐเตเดจเตเดจเต, "เดถเตเดฆเตเดงเดฎเดพเดฏ" FTS เดจเต‡เด•เตเด•เดพเตพ เด†เดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดฎเดŸเด™เตเด™เต เด•เต‚เดŸเตเดคเตฝ เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฃเต! เด’เดฐเตŠเดฑเตเดฑ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดพเดฏเดฟ เด‡เดคเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต:

(
  SELECT
    *
  FROM
    firms
  WHERE
    lower(name) >= 'ั€ะพะทะฐ' AND
    lower(name) <= ('ั€ะพะทะฐ' || chr(65535)) -- ะดะปั UTF8, ะดะปั ะพะดะฝะพะฑะฐะนั‚ะพะฒั‹ั… ะบะพะดะธั€ะพะฒะพะบ - chr(255)
  ORDER BY
     lower(name)
  LIMIT 10
)
UNION ALL
(
  SELECT
    *
  FROM
    firms
  WHERE
    to_tsvector('simple'::regconfig, lower(name)) @@ to_tsquery('simple', 'ั€ะพะทะฐ:*') AND
    lower(name) NOT LIKE ('ั€ะพะทะฐ' || '%') -- "ะฝะฐั‡ะธะฝะฐัŽั‰ะธะตัั ะฝะฐ" ะผั‹ ัƒะถะต ะฝะฐัˆะปะธ ะฒั‹ัˆะต
  ORDER BY
    lower(name) ~ ('^' || 'ั€ะพะทะฐ') DESC -- ะธัะฟะพะปัŒะทัƒะตะผ ั‚ัƒ ะถะต ัะพั€ั‚ะธั€ะพะฒะบัƒ, ั‡ั‚ะพะฑั‹ ะะ• ะฟะพะนั‚ะธ ะฟะพ btree-ะธะฝะดะตะบััƒ
  , lower(name)
  LIMIT 10
)
LIMIT 10;

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

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

1.5*: เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดซเดฏเตฝ เด‡เดฒเตเดฒเดพเดคเต† เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚

เดฎเตเด•เดณเดฟเตฝ LIKE เดคเต†เดฑเตเดฑเดพเดฏ เดธเต‹เตผเดŸเตเดŸเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เดณเต† เดคเดŸเดžเตเดžเต. เดŽเดจเตเดจเดพเตฝ, USING เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเด•เตเด•เตŠเดฃเตเดŸเต เด‡เดคเต "เดถเดฐเดฟเดฏเดพเดฏ เดชเดพเดคเดฏเดฟเตฝ เดธเดœเตเดœเดฎเดพเด•เตเด•เดพเตป" เด•เดดเดฟเดฏเตเด‚:

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เด…เดคเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต ASC. เด•เต‚เดŸเดพเดคเต†, เด’เดฐเต เด•เตเดฒเต‹เดธเดฟเตฝ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดธเต‹เตผเดŸเตเดŸเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเตเดŸเต† เดชเต‡เดฐเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ USING. เดธเต‹เตผเดŸเตเดŸเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดšเดฟเดฒ เดฌเดฟ-เดŸเตเดฐเต€ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผเดฎเดพเดฐเตเดŸเต† เด•เตเดŸเตเด‚เดฌเดคเตเดคเต‡เด•เตเด•เดพเตพ เด•เตเดฑเดตเต‹ เดตเดฒเตเดคเต‹ เด†เดฏ เด…เด‚เด—เดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. ASC เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดคเตเดฒเตเดฏเดฎเดพเดฃเต USING < ะธ DESC เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดคเตเดฒเตเดฏเดฎเดพเดฃเต USING >.

เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, "เด•เตเดฑเดตเต" เด†เดฃเต ~<~:

SELECT
  *
FROM
  firms
WHERE
  lower(name) LIKE ('ั€ะพะทะฐ' || '%')
ORDER BY
  lower(name) USING ~<~
LIMIT 10;

PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"
[explain.tensor.ru-เตฝ เด•เดพเดฃเตเด•]

2: เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดŽเด™เตเด™เดจเต† เดšเต€เดคเตเดคเดฏเดพเด•เตเดจเตเดจเต

เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด†เดฑเต เดฎเดพเดธเดคเตเดคเต‡เด•เตเด•เต‹ เด’เดฐเต เดตเตผเดทเดคเตเดคเต‡เด•เตเด•เต‹ "เด…เดฐเด•เตเด•เตเด•" เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเดŸเต† เดฎเตŠเดคเตเดคเด‚ เดฆเตˆเดจเด‚เดฆเดฟเดจ "เดชเดฎเตเดชเดฟเด‚เด—เดฟเดจเตเดฑเต†" เดธเต‚เดšเด•เด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚ เด…เดคเต เดตเต€เดฃเตเดŸเตเด‚ "เดฎเตเด•เดณเดฟเตฝ" เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเตฝ เดžเด™เตเด™เตพ เด†เดถเตเดšเดฐเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต (เดฌเดซเดฑเตเด•เตพ เดชเด™เตเด•เดฟเดŸเตเดŸ เดนเดฟเดฑเตเดฑเต) เตฝ 5.5TB - เด…เดคเดพเดฏเดคเต, เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ.

เด‡เดฒเตเดฒ, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดžเด™เตเด™เดณเตเดŸเต† เดฌเดฟเดธเดฟเดจเดธเตเดธเต เดตเดณเตผเดจเตเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟเดญเดพเดฐเด‚ เดตเตผเดฆเตเดงเดฟเดšเตเดšเต, เดชเด•เตเดทเต‡ เด…เดคเต‡ เด…เดณเดตเดฟเตฝ เด…เดฒเตเดฒ! เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚ เด‡เดตเดฟเดŸเต† เดŽเดจเตเดคเต‹ เดฎเดคเตเดธเตเดฏเด‚ เด‰เดฃเตเดŸเต†เดจเตเดจเดพเดฃเต - เดจเดฎเตเด•เตเด•เต เด…เดคเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเด‚.

2.1: เดชเต‡เดœเดฟเด‚เด—เดฟเดจเตเดฑเต† เดœเดจเดจเด‚

เดšเดฟเดฒ เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเตฝ, เดฎเดฑเตเดฑเตŠเดฐเต เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดŸเต€เด‚, เดฆเตเดฐเตเดค เดธเดฌเตโ€Œเดธเตโ€Œเด•เตเดฐเดฟเดชเตโ€Œเดฑเตเดฑเต เดคเดฟเดฐเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดœเดฟเดธเตโ€ŒเดŸเตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด…เดคเต‡, เดŽเดจเตเดจเดพเตฝ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฟเดšเตเดš เดซเดฒเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต "เดšเดพเดŸเดฟ" เดธเดพเดงเตเดฏเดฎเดพเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต. เดชเต‡เดœเต เดจเดพเดตเดฟเด—เต‡เดทเตป เด‡เดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เดŽเดจเตเดคเดพเดฃเต? เดจเดฎเตเด•เตเด•เต เด…เดคเต เดชเตŠเดณเดฟเด•เตเด•เดพเด‚!

( ... LIMIT <N> + 10)
UNION ALL
( ... LIMIT <N> + 10)
LIMIT 10 OFFSET <N>;

เดกเต†เดตเดฒเดชเตเดชเตผเด•เตเด•เต เดฏเดพเดคเตŠเดฐเต เดธเดฎเตเดฎเตผเดฆเตเดฆเดตเตเดฎเดฟเดฒเตเดฒเดพเดคเต† "เดชเต‡เดœเต-เดฌเตˆ-เดชเต‡เดœเต" เดฒเต‹เดกเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเดฟเดฐเดฏเตฝ เดซเดฒเด™เตเด™เดณเตเดŸเต† เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เด•เดพเดฃเดฟเด•เตเด•เดพเตป เด‡เดชเตเดชเต‹เตพ เดธเดพเดงเดฟเดšเตเดšเต.

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด“เดฐเต‹ เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดชเต‡เดœเตเด•เตพเด•เตเด•เตเด‚ เด•เต‚เดŸเตเดคเตฝ เด•เต‚เดŸเตเดคเตฝ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต (เดŽเดฒเตเดฒเดพเด‚ เดฎเตเดฎเตเดชเดคเตเดคเต† เดธเดฎเดฏเด‚ เดฎเตเดคเตฝ, เดžเด™เตเด™เตพ เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เด†เดตเดถเตเดฏเดฎเดพเดฏ โ€œเดตเดพเดฒเตเด‚โ€) - เด…เดคเดพเดฏเดคเต, เด‡เดคเตŠเดฐเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เตบ เด†เดฃเต. เดŽเดจเตเดจเดพเตฝ เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เต€เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด…เดŸเตเดคเตเดค เด†เดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ เดคเดฟเดฐเดฏเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดถเดฐเดฟเดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดŽเดจเตเดจเดพเตฝ เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฎเดฑเตเดฑเตŠเดฐเต เดธเดฎเดฏเด‚.

2.2: เดŽเดจเดฟเด•เตเด•เต เดตเดฟเดšเดฟเดคเตเดฐเดฎเดพเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดตเต‡เดฃเด‚

เดšเดฟเดฒ เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเตฝ เดกเต†เดตเดฒเดชเตเดชเตผ เด†เด—เตเดฐเดนเดฟเดšเตเดšเต เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดธเดพเดฎเตเดชเดฟเตพ เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเตˆเดตเดฟเดงเตเดฏเดตเตฝเด•เตเด•เดฐเดฟเด•เตเด•เตเด• เดฎเดฑเตเดฑเตŠเดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต, เดฎเตเดฎเตเดชเดคเตเดคเต† เดฎเตเดดเตเดตเตป เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด‚ CTE-เดฒเต‡เด•เตเด•เต เด…เดฏเดšเตเดšเต:

WITH q AS (
  ...
  LIMIT <N> + 10
)
SELECT
  *
, (SELECT ...) sub_query -- ะบะฐะบะพะน-ั‚ะพ ะทะฐะฟั€ะพั ะบ ัะฒัะทะฐะฝะฝะพะน ั‚ะฐะฑะปะธั†ะต
FROM
  q
LIMIT 10 OFFSET <N>;

เด…เด™เตเด™เดจเต†เดฏเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚, เด‡เดคเต เดฎเต‹เดถเดฎเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดฎเดŸเด™เตเด™เดฟเดฏ 10 เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดธเดฌเตเด•เตเดตเดฑเดฟ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตเดจเตเดจเดคเต, เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ ...

2.3: เดตเตเดฏเดคเดฟเดฐเดฟเด•เตเดคเดค เด…เตผเดคเตเดฅเดถเต‚เดจเตเดฏเดตเตเด‚ เด•เดฐเตเดฃเดฏเดฟเดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฃเต

2-เด†เด‚ เดธเดฌเตเด•เตเดตเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด…เดคเตเดคเดฐเด‚ เดชเดฐเดฟเดฃเดพเดฎ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ เดŽเดตเดฟเดŸเต†เดฏเต‹ เดจเดทเตเดŸเดชเตเดชเต†เดŸเตเดŸเต NOT LIKE เด…เดตเดธเตเดฅ. เด‡เดคเดฟเดจเต เดชเดฟเดจเตเดจเดพเดฒเต†เดฏเดพเดฃเต เด‡เด•เตเด•เดพเดฐเตเดฏเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดคเต UNION ALL เดคเดฟเดฐเดฟเดšเตเดšเตเดตเดฐเดพเตป เดคเตเดŸเด™เตเด™เดฟ เดšเดฟเดฒ เดŽเตปเดŸเตเดฐเดฟเด•เตพ เดฐเดฃเตเดŸเตเดคเดตเดฃ - เด†เดฆเตเดฏเด‚ เดตเดฐเดฟเดฏเตเดŸเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ, เดคเตเดŸเตผเดจเตเดจเต เดตเต€เดฃเตเดŸเตเด‚ - เดˆ เดตเดฐเดฟเดฏเตเดŸเต† เด†เดฆเตเดฏ เดตเดพเด•เตเด•เดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ. เดชเดฐเดฟเดงเดฟเดฏเดฟเตฝ, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดธเดฌเตเด•เตเดตเดฑเดฟเดฏเตเดŸเต† เดŽเดฒเตเดฒเดพ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเด‚ เด†เดฆเตเดฏเดคเตเดคเต‡เดคเดฟเดจเตเดฑเต† เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเดพเด‚.

เด•เดพเดฐเดฃเด‚ เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเด•เดฐเด‚ เด’เดฐเต เดกเต†เดตเดฒเดชเตเดชเตผ เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต?.. เดšเต‹เดฆเตเดฏเดฎเดฟเดฒเตเดฒ!

  • เด‡เดฐเดŸเตเดŸเดฟ เดตเดฒเดฟเดชเตเดชเด‚ เดฏเดฅเดพเตผเดคเตเดฅ เดธเดพเดฎเตเดชเดฟเดณเตเด•เตพ
  • DISTINCT เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด•เด“เดฐเต‹ เดตเดฐเดฟเดฏเตเดŸเต†เดฏเตเด‚ เด’เดฐเตŠเดฑเตเดฑ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดฎเดพเดคเตเดฐเด‚ เดฒเดญเดฟเด•เตเด•เดพเตป

WITH q AS (
  ( ... LIMIT <2 * N> + 10)
  UNION ALL
  ( ... LIMIT <2 * N> + 10)
  LIMIT <2 * N> + 10
)
SELECT DISTINCT
  *
, (SELECT ...) sub_query
FROM
  q
LIMIT 10 OFFSET <N>;

เด…เดคเดพเดฏเดคเต, เดซเดฒเด‚, เด…เดตเดธเดพเดจเด‚, เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดธเดฎเดพเดจเดฎเดพเดฃเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ 2nd CTE เดธเดฌเตเด•เตเดตเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต "เดชเดฑเด•เตเด•เดพเดจเตเดณเตเดณ" เดธเดพเดงเตเดฏเดค เดตเดณเดฐเต† เด‰เดฏเตผเดจเตเดจเดคเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† เด‡เดคเต เด•เต‚เดŸเดพเดคเต†, เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เด•เต‚เดŸเตเดคเตฝ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดเดฑเตเดฑเดตเตเด‚ เดธเด™เตเด•เดŸเด•เดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเดฎเดฒเตเดฒ. เดกเดตเดฒเดชเตเดชเตผ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดŸเดคเดฟเดจเดพเตฝ DISTINCT เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸเดตเดฏเตโ€Œเด•เตเด•เดฒเตเดฒ, เดŽเดฒเตเดฒเดพ เดซเต€เตฝเดกเตเด•เตพเด•เตเด•เตเด‚ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ, เดคเตเดŸเตผเดจเตเดจเต sub_query เดซเต€เตฝเดกเต - เดธเดฌเตเด•เตเดตเดฑเดฟเดฏเตเดŸเต† เดซเดฒเด‚ - เด…เดตเดฟเดŸเต† เดฏเดพเดจเตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดฟ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ. เด‡เดชเตเดชเต‹เตพ, เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป DISTINCT, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต 10 เดธเดฌเตเด•เตเดตเดฑเดฟเด•เดณเดฒเตเดฒ, เดŽเดฒเตเดฒเดพเด‚ <2 * N> + 10!

2.4: เดŽเดฒเตเดฒเดพเดฑเตเดฑเดฟเดจเตเดฎเตเดชเดฐเดฟเดฏเดพเดฏเดฟ เดธเดนเด•เดฐเดฃเด‚!

เด…เดคเดฟเดจเดพเตฝ, เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดœเต€เดตเดฟเดšเตเดšเต - เด…เดตเตผ เดตเดฟเดทเดฎเดฟเดšเตเดšเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด“เดฐเต‹ เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ โ€œเดชเต‡เดœเตเด‚โ€ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต† เดตเดฟเดŸเตเดŸเตเดฎเดพเดฑเดพเดคเตเดค เดฎเดจเตเดฆเดคเดฏเต‹เดŸเต†, เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ N เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ โ€œเด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเตปโ€ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เดฎเดคเดฟเดฏเดพเดฏ เด•เตเดทเดฎ เด‡เดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เดฎเดฑเตเดฑเตŠเดฐเต เดกเดฟเดชเตเดชเดพเตผเดŸเตเดŸเตเดฎเต†เดจเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด…เดตเดฐเตเดŸเต† เด…เดŸเตเดคเตเดคเต เดตเดจเตเดจเต เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด†เดตเตผเดคเตเดคเดจ เดคเดฟเดฐเดฏเดฒเดฟเดจเดพเดฏเดฟ - เด…เดคเดพเดฏเดคเต, เดžเด™เตเด™เตพ เดšเดฟเดฒ เดธเดพเดฎเตเดชเดฟเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด•เดทเดฃเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต, เด…เดงเดฟเด• เดตเตเดฏเดตเดธเตเดฅเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดคเต เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดซเดฒเด‚ เดตเดฐเดฏเตเด•เตเด•เตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด…เดŸเตเดคเตเดค เด•เดทเดฃเด‚ (เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด‡เดคเต N เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดจเต‡เดŸเดพเด‚), เด…เด™เตเด™เดจเต† เดžเด™เตเด™เตพ เดธเตโ€Œเด•เตเดฐเต€เตป เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเตเดตเดฐเต†.

เดชเตŠเดคเตเดตเต‡, เดชเดฟเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ เดฎเดพเดคเตƒเด•เดฏเดฟเตฝ N เดเดคเดพเดฃเตเดŸเต 17K เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเดฟเตฝ เดŽเดคเตเดคเดฟ, เด’เดฐเต เดฆเดฟเดตเดธเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เด…เดคเตเดคเดฐเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเดฟเตฝ 4K เดŽเด™เตเด•เดฟเดฒเตเด‚ "เดšเด™เตเด™เดฒเดฏเดฟเตฝ" เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟ. เด…เดตเดฏเดฟเตฝ เด…เดตเดธเดพเดจเดคเตเดคเต‡เดคเต เดงเตˆเดฐเตเดฏเดคเตเดคเต‹เดŸเต† เดธเตเด•เดพเตป เดšเต†เดฏเตเดคเต เด“เดฐเต‹ เด†เดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเด‚ 1GB เดฎเต†เดฎเตเดฎเดฑเดฟเดชเด™เตเด•เต โ‚ฌ |

เด†เด•เต†

PostgreSQL เด†เดจเตเดฑเดฟเดชเดพเดฑเตเดฑเต‡เดฃเตเด•เตพ: เดชเต‡เดฐเดฟเดจเดพเตฝ เดคเดฟเดฐเดฏเดฒเดฟเดจเตเดฑเต† เด†เดตเตผเดคเตเดคเดจ เดชเดฐเดฟเดทเตเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด•เดฅ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เด…เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด‡เด™เตเด™เต‹เดŸเตเดŸเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป"

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

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