เจฆเฉเจธเจผ เจญเจฐ เจฆเฉ เจธเฉเจฒเจเจผ เจเจซเจฟเจธเจพเจ เจฆเฉ เจนเจเจผเจพเจฐเจพเจ เจฎเฉเจจเฉเจเจฐ เจฐเจฟเจเจพเจฐเจก เจเจฐเจฆเฉ เจนเจจ
เจเจธ เจฒเจ, เจเจน เจนเฉเจฐเจพเจจเฉ เจฆเฉ เจเฉฑเจฒ เจจเจนเฉเจ เจนเฉ เจเจฟ, เจเฉฑเจ เจตเจพเจฐ เจซเจฟเจฐ เจธเจญ เจคเฉเจ เจตเฉฑเจง เจฒเฉเจก เจเฉเจคเฉ เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ 'เจคเฉ "เจญเจพเจฐเฉ" เจธเจตเจพเจฒเจพเจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจเจพ - เจธเจพเจกเฉ เจเจชเจฃเฉ
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจ เจเจฒเฉเจฐเฉ เจเจพเจเจ เจคเฉเจ เจเจ เจฆเจฟเจฒเจเจธเจช เจเจฆเจพเจนเจฐเจฃ เจธเจพเจนเจฎเจฃเฉ เจเจ เจนเฉ เจชเจนเจฟเจฒเจพเจ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจ เจคเฉ เจซเจฟเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเฉฑเจ เจเจฟเจฐเจพเจตเจ เจเจ เจเฉเจฎเจพเจ เจฆเฉเจเจฐเจพ เจเจธเจฆเฉ เจเฉเจฐเจฎเจตเจพเจฐ เจธเฉเจงเจพเจ เจฆเฉ เจจเจพเจฒ เจฌเฉเจจเจคเฉ, เจเจฟเจจเฉเจนเจพเจ เจตเจฟเฉฑเจเฉเจ เจนเจฐ เจเฉฑเจ เจจเฉ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจตเจงเฉเจ เจเจฐเจพเจฆเจฟเจเจ เจจเจพเจฒ เจเฉฐเจฎ เจเฉเจคเจพเฅค
0: เจเจชเจญเฉเจเจคเจพ เจเฉ เจเจพเจนเฉเฉฐเจฆเจพ เจธเฉ?
[KDPV
เจเฉฑเจ เจเจชเจญเฉเจเจคเจพ เจฆเจพ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเฉ เจฎเจคเจฒเจฌ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฆเฉเจ เจเจน เจจเจพเจฎ เจฆเฉเจเจฐเจพ "เจคเฉเจฐเฉฐเจค" เจเฉเจ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจฆเฉ เจนเจจ? เจเจน เจฒเจเจญเจ เจเจฆเฉ เจตเฉ เจธเจฌเจธเจเฉเจฐเจฟเฉฐเจ เจตเจฐเจเฉ "เจเจฎเจพเจจเจฆเจพเจฐ" เจเฉเจ เจจเจนเฉเจ เจจเจฟเจเจฒเจฆเจพ ... LIKE '%ัะพะทะฐ%'
- เจเจฟเจเจเจเจฟ เจซเจฟเจฐ เจจเจคเฉเจเฉ เจตเจฟเฉฑเจ เจจเจพ เจธเจฟเจฐเจซ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉ 'ะ ะพะทะฐะปะธั'
ะธ 'ะะฐะณะฐะทะธะฝ ะ ะพะทะฐ'
เจชเจฐ 'ะัะพะทะฐ'
เจ
เจคเฉ เจตเฉ 'ะะพะผ ะะตะดะฐ ะะพัะพะทะฐ'
.
เจเจชเจญเฉเจเจคเจพ เจฐเฉเจเจผเจพเจจเจพ เจชเฉฑเจงเจฐ 'เจคเฉ เจฎเฉฐเจจเจฆเจพ เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจเจธเจจเฉเฉฐ เจชเฉเจฐเจฆเจพเจจ เจเจฐเฉเจเฉ เจธเจผเจฌเจฆ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจฆเฉเจเจฐเจพ เจเฉเจ เจเจฐเฉ เจธเจฟเจฐเจฒเฉเจ เจตเจฟเฉฑเจ เจ
เจคเฉ เจเจธ เจจเฉเฉฐ เจนเฉเจฐ เจขเฉเจเจตเจพเจ เจฌเจฃเจพเจ 'เจคเฉ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเจพ เจนเฉ เจฆเจพเจเจฒ เจเฉเจคเจพเฅค เจ
เจคเฉ เจคเฉเจธเฉเจ เจเจน เจเจฐเฉเจเฉ เจฒเจเจญเจ เจคเฉเจฐเฉฐเจค - เจเฉฐเจเจฐเจฒเจพเจเจจเจฐ เจเฉฐเจชเฉเฉฑเจ เจฒเจเฅค
1: เจเฉฐเจฎ เจจเฉเฉฐ เจธเฉเจฎเจค เจเจฐเฉ
เจ
เจคเฉ เจเจธ เจคเฉเจ เจตเฉ เจตเฉฑเจง, เจเฉฑเจ เจตเจฟเจ
เจเจคเฉ เจตเจฟเจธเจผเฉเจธเจผ เจคเฉเจฐ 'เจคเฉ เจฆเจพเจเจฒ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพ 'ัะพะท ะผะฐะณะฐะท'
, เจคเจพเจ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจ
เจเฉเจคเจฐ เจฆเฉเจเจฐเจพ เจนเจฐเฉเจ เจธเจผเจฌเจฆ เจฆเฉ เจเฉเจ เจเจฐเจจเฉ เจชเจตเฉเฅค เจจเจนเฉเจ, เจเจฟเจธเฉ เจเจชเจญเฉเจเจคเจพ เจฒเจ เจชเจฟเจเจฒเฉ เจธเจผเจฌเจฆเจพเจ เจจเฉเฉฐ เจเจพเจฃเจฌเฉเฉฑเจ เจเฉ "เจ
เฉฐเจกเจฐ-เจจเจฟเจฐเจงเจพเจฐเจค" เจเจฐเจจ เจจเจพเจฒเฉเจ เจเจเจฐเฉ เจธเจผเจฌเจฆ เจฒเจ เจเฉฑเจ เจคเฉเจเจผ เจธเฉฐเจเฉเจค เจฆเจพ เจเจตเจพเจฌ เจฆเฉเจฃเจพ เจฌเจนเฉเจค เจธเฉเจเจพ เจนเฉ - เจฆเฉเจเฉ เจเจฟ เจเฉเจ เจตเฉ เจเฉเจ เจเฉฐเจเจฃ เจเจธ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจธเฉฐเจญเจพเจฒเจฆเจพ เจนเฉเฅค
เจเจจเจฐเจฒ เจธเฉฑเจเฉ เจธเจฎเฉฑเจธเจฟเจ เจฒเจ เจฒเฉเฉเจพเจ เจจเฉเฉฐ เจคเจฟเจเจฐ เจเจฐเจจเจพ เจ
เฉฑเจงเฉ เจคเฉเจ เจตเฉฑเจง เจนเฉฑเจฒ เจนเฉเฅค เจเจ เจตเจพเจฐ เจงเจฟเจเจจ เจจเจพเจฒ เจเฉเจธ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ
เจเฉฑเจ เจเจฌเจธเจเจฐเฉเจเจ เจกเจฟเจตเฉเจฒเจชเจฐ เจเฉ เจเจฐเจฆเจพ เจนเฉ?
1.0: เจฌเจพเจนเจฐเฉ เจเฉเจ เจเฉฐเจเจฃ
เจเจน, เจเฉเจ เจเจฐเจจเจพ เจเจเจพ เจนเฉ, เจฎเฉเจ เจฌเจฟเจฒเจเฉเจฒ เจตเฉ เจเฉเจ เจจเจนเฉเจ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเจพ - เจเจฒเฉ เจเจธเจจเฉเฉฐ เจกเฉเจตเฉเจชเจธ เจจเฉเฉฐ เจฆเฉเจเจ! เจเจนเจจเจพเจ เจจเฉเฉฐ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจฌเจพเจนเจฐเฉ เจเฉเจ เจเฉฐเจเจฃ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจฆเจฟเจ: Sphinx, ElasticSearch,...
เจเฉฑเจ เจเฉฐเจฎ เจเจฐเจจ เจฆเจพ เจตเจฟเจเจฒเจช, เจญเจพเจตเฉเจ เจเจฟ เจธเจฎเจเจพเจฒเฉเจเจฐเจจ เจ
เจคเฉ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฆเฉ เจเจคเฉ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจฟเจฐเจค-เจธเฉฐเจฌเฉฐเจงเฉ เจนเฉเฅค เจชเจฐ เจธเจพเจกเฉ เจเฉเจธ เจตเจฟเฉฑเจ เจจเจนเฉเจ, เจเจฟเจเจเจเจฟ เจเฉเจ เจนเจฐเฉเจ เจเจพเจนเจ เจฒเจ เจธเจฟเจฐเจซเจผ เจเจธเจฆเฉ เจเจพเจคเฉ เจฆเฉ เจกเฉเจเจพ เจฆเฉ เจขเจพเจเจเฉ เจฆเฉ เจ
เฉฐเจฆเจฐ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ. เจ
เจคเฉ เจกเฉเจเจพ เจตเจฟเฉฑเจ เจเจพเจซเจผเฉ เจเฉฑเจ เจชเจฐเจฟเจตเจฐเจคเจจเจธเจผเฉเจฒเจคเจพ เจนเฉ - เจ
เจคเฉ เจเฉเจเจฐ เจฎเฉเจจเฉเจเจฐ เจจเฉ เจนเฉเจฃ เจเจพเจฐเจก เจตเจฟเฉฑเจ เจฆเจพเจเจฒ เจเฉเจคเจพ เจนเฉ 'ะะฐะณะฐะทะธะฝ ะ ะพะทะฐ'
, เจซเจฟเจฐ 5-10 เจธเจเจฟเฉฐเจเจพเจ เจฌเจพเจ
เจฆ เจเจธเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฏเจพเจฆ เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟ เจเจน เจเฉฑเจฅเฉ เจเจชเจฃเฉ เจเจฎเฉเจฒ เจฆเจฐเจธเจพเจเจฃเจพ เจญเฉเฉฑเจฒ เจเจฟเจ เจธเฉ เจ
เจคเฉ เจเจธเจจเฉเฉฐ เจฒเฉฑเจญเจฃเจพ เจ
เจคเฉ เจเจธเจจเฉเฉฐ เจ เฉเจ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเฉเฅค
เจเจธ เจฒเจ - เจเจ "เจกเจพเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจธเจฟเฉฑเจงเจพ" เจเฉเจเฉ. เจเฉเจธเจผเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, PostgreSQL เจธเจพเจจเฉเฉฐ เจ เจเจฟเจนเจพ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจจเจพ เจเจฟ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจตเจฟเจเจฒเจช - เจ เจธเฉเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจฆเฉเจเจพเจเจเฉ.
1.1: "เจเจฎเจพเจจเจฆเจพเจฐ" เจธเจฌเจธเจเจฐเจฟเฉฐเจ
เจ
เจธเฉเจ "เจธเจฌเจธเจเฉเจฐเจฟเฉฐเจ" เจธเจผเจฌเจฆ เจจเจพเจฒ เจเจฟเฉฐเจฌเฉเฉ เจนเจพเจเฅค เจชเจฐ เจธเจฌเจธเจเจฐเจฟเฉฐเจ เจฆเฉเจเจฐเจพ เจธเฉเจเจเจพเจเจ เจเฉเจ เจฒเจ (เจ
เจคเฉ เจจเจฟเจฏเจฎเจค เจธเจฎเฉเจเจฐเจจ เจฆเฉเจเจฐเจพ เจตเฉ!) เจเฉฑเจ เจธเจผเจพเจจเจฆเจพเจฐ เจนเฉ
เจเจ เจฎเจพเจกเจฒ เจจเฉเฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจเจฃ เจฒเจ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจชเจฒเฉเจ เจจเฉเฉฐ เจฒเฉเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจ:
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;
เจเฉเจฐ, เจเจน... 26ms, 31MB เจกเจพเจเจพ เจชเฉเฉเจนเฉ เจ เจคเฉ 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;
เจเฉฑเจฅเฉ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเฉ เจธเจฎเจพเจจเจคเจพ เจจเฉ เจธเจพเจกเฉ เจฅเฉเฉเฉ เจฎเจฆเจฆ เจเฉเจคเฉ, เจธเจฎเฉเจ เจจเฉเฉฐ เจ เฉฑเจงเจพ เจเจฐ เจฆเจฟเฉฑเจคเจพ 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;
เจธเจผเจพเจจเจฆเจพเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ - เจเฉเฉฑเจฒ 0.05ms เจ เจคเฉ 100KB เจคเฉเจ เจฅเฉเฉเฉเจนเจพ เจตเฉฑเจง เจชเฉเฉเจนเฉ! เจธเจฟเจฐเจซเจผ เจ เจธเฉเจ เจญเฉเฉฑเจฒ เจเจ เจจเจพเจฎ เจฆเฉเจเจฐเจพ เจเฉเจฐเจฎเจฌเฉฑเจงเจคเจพเจ เจเฉ เจเจชเจญเฉเจเจคเจพ เจจเจคเฉเจเจฟเจเจ เจตเจฟเฉฑเจ เจเฉเจเจ เจจเจพ เจเจพเจตเฉ:
SELECT
*
FROM
firms
WHERE
lower(name) LIKE ('ัะพะทะฐ' || '%')
ORDER BY
lower(name)
LIMIT 10;
เจเจน, เจเฉเจ เจเฉเจเจผ เจนเฉเจฃ เจเฉฐเจจเฉ เจธเฉเฉฐเจฆเจฐ เจจเจนเฉเจ เจนเฉ - เจ เจเจฟเจนเจพ เจฒเจเจฆเจพ เจนเฉ เจเจฟเจตเฉเจ เจเฉเจ เจธเฉเจเจเจพเจเจ เจนเฉ, เจชเจฐ เจเจพเจเจเฉ เจเจธ เจจเฉเฉฐ เจชเจพเจฐ เจเจฐเจฆเฉ เจนเฉ... เจฌเฉเจธเจผเจ, เจเจน เจชเจนเจฟเจฒเจพเจ เจนเฉ เจชเจฟเจเจฒเฉ เจตเจฟเจเจฒเจช เจจเจพเจฒเฉเจ เจเจ เจเฉเจฃเจพ เจเจผเจฟเจเจฆเจพ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ เจนเฉ, เจชเจฐ...
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;
เจธเจผเจพเจจเจฆเจพเจฐ - เจเจพเจเจเฉ เจฆเจพ เจเฉฐเจฎ, เจ เจคเฉ เจธเจฐเฉเจค เจฆเฉ เจเจชเจค "เจฎเจพเจเจเฉเจฐเฉเจธเจเฉเจชเจฟเจ" เจฐเจนเจฟเฉฐเจฆเฉ เจนเฉ, "เจธเจผเฉเฉฑเจง" 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
เจฒเจพเจเจจเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉเฅค เจฎเฉเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจ
เจจเฉเจเฉเจฒเจจ เจฆเฉ เจเจธ เจตเจฟเจงเฉ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐ เจฐเจฟเจนเจพ เจนเจพเจ
เจเจธ เจฒเจ เจนเจพเจ, เจธเจพเจกเฉ เจเฉเจฒ เจนเฉเจฃ เจฎเฉเจเจผ 'เจคเฉ btree เจ เจคเฉ gin เจฆเฉเจตเฉเจ เจนเจจ, เจชเจฐ เจ เฉฐเจเฉเจฟเจเจ เจ เจจเฉเจธเจพเจฐ เจเจน เจชเจคเจพ เจเจฒเจฆเจพ เจนเฉ เจเจฟ 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;
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: DISTINCT เจฌเฉเจธเจฎเจ เจ เจคเฉ เจฌเฉเจฐเจนเจฟเจฎ เจนเฉ
เจเจฟเจคเฉ เจฆเฉเจเฉ เจธเจฌเจเจตเฉเจฐเฉ เจคเฉเจ เจ
เจเจฟเจนเฉ เจตเจฟเจเจพเจธ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจเฉเฉฐเจฎ เจนเฉ เจเจฟเจ 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
เจเจพเจธ เจฒเฉเจเจพเจ เจฒเจ เจจเจนเฉเจ, เจชเจฐ เจเฉฑเจ เจตเจพเจฐ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจเฉเจคเจฐเจพเจ เจฒเจ เจฐเจฟเจเจพเจฐเจก, เจซเจฟเจฐ เจธเจฌ_เจเจตเฉเจฐเฉ เจซเฉเจฒเจก โ เจธเจฌเจเจตเฉเจฐเฉ เจฆเจพ เจจเจคเฉเจเจพ โ เจเฉฑเจฅเฉ เจเจเฉเจฎเฉเจเจฟเจเจฒเฉ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค เจนเฉเจฃ, เจเจฒเจพเจเจฃ เจฒเจ DISTINCT
, เจกเฉเจเจพเจฌเฉเจธ เจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจฒเจพเจเจฃเจพ เจธเฉ 10 เจธเจฌเจเจตเฉเจฐเฉเจเจ เจจเจนเฉเจ, เจชเจฐ เจธเจพเจฐเฉเจเจ <2 * N> + 10!
2.4: เจธเจญ เจคเฉเจ เจเฉฑเจชเจฐ เจธเจนเจฟเจฏเฉเจ!
เจเจธ เจฒเจ, เจกเจฟเจตเฉเจฒเจชเจฐ เจฐเจนเจฟเฉฐเจฆเฉ เจธเจจ - เจเจนเจจเจพเจ เจจเฉ เจชเจฐเฉเจธเจผเจพเจจ เจจเจนเฉเจ เจเฉเจคเจพ, เจเจฟเจเจเจเจฟ เจเจชเจญเฉเจเจคเจพ เจเฉเจฒ เจธเจชเฉฑเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจนเจฐเฉเจ เจ เจเจฒเฉ "เจชเฉฐเจจเฉ" เจจเฉเฉฐ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉฐเจญเฉเจฐ เจฎเฉฐเจฆเฉ เจฆเฉ เจจเจพเจฒ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจฃ N เจฎเฉเฉฑเจฒเจพเจ เจตเจฟเฉฑเจ เจฐเจเจฟเจธเจเจฐเฉ เจจเฉเฉฐ "เจ เจกเจเจธเจ" เจเจฐเจจ เจฒเจ เจเจพเจซเจผเฉ เจงเฉเจฐเจ เจจเจนเฉเจ เจธเฉเฅค
เจเจฆเฉเจ เจคเฉฑเจ เจเจฟเจธเฉ เจนเฉเจฐ เจตเจฟเจญเจพเจ เจฆเฉ เจกเจฟเจตเฉเจฒเจชเจฐ เจเจจเฉเจนเจพเจ เจเฉเจฒ เจจเจนเฉเจ เจเจเจเจฆเฉ เจ เจคเฉ เจ เจเจฟเจนเฉ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจขเฉฐเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจธเจจ เจฆเฉเจนเจฐเจพเจ เจเฉเจ เจฒเจ - เจญเจพเจต, เจ เจธเฉเจ เจเฉเจ เจจเจฎเฉเจจเฉ เจคเฉเจ เจเฉฑเจ เจเฉเจเฉเจพ เจฒเฉเจเจฆเฉ เจนเจพเจ, เจเจธ เจจเฉเฉฐ เจตเจพเจงเฉ เจธเจผเจฐเจคเจพเจ เจฆเฉเจเจฐเจพ เจซเจฟเจฒเจเจฐ เจเจฐเจฆเฉ เจนเจพเจ, เจจเจคเฉเจเจพ เจเจฟเฉฑเจเจฆเฉ เจนเจพเจ, เจซเจฟเจฐ เจ เจเจฒเจพ เจเฉเจเฉเจพ (เจเฉ เจธเจพเจกเฉ เจเฉเจธ เจตเจฟเฉฑเจ N เจจเฉเฉฐ เจตเจงเจพ เจเฉ เจชเฉเจฐเจพเจชเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ), เจ เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจเจฆเฉเจ เจคเฉฑเจ เจเจฆเฉเจ เจคเฉฑเจ เจ เจธเฉเจ เจธเจเฉเจฐเฉเจจ เจจเจนเฉเจ เจญเจฐเจฆเฉเฅค
เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจซเฉเฉ เจเจ เจจเจฎเฉเจจเฉ เจตเจฟเฉฑเจ N เจฒเจเจญเจ 17K เจฆเฉ เจฎเฉเฉฑเจฒเจพเจ 'เจคเฉ เจชเจนเฉเฉฐเจ เจเจฟเจ, เจ เจคเฉ เจเฉเจตเจฒ เจเฉฑเจ เจฆเจฟเจจ เจตเจฟเฉฑเจ เจเฉฑเจเฉ-เจเฉฑเจ 4K เจ เจเจฟเจนเฉเจเจ เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ "เจธเฉฐเจเฉเจค เจฆเฉ เจจเจพเจฒ" เจฒเจพเจเฉ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค เจเจจเฉเจนเจพเจ เจตเจฟเฉฑเจเฉเจ เจเจเจฐเฉ เจจเฉเฉฐ เจฆเจฒเฉเจฐเฉ เจจเจพเจฒ เจธเจเฉเจจ เจเฉเจคเจพ เจเจฟเจ เจธเฉ เจชเฉเจฐเจคเฉ เจฆเฉเจนเจฐเจพเจ 1GB เจฎเฉเจฎเฉเจฐเฉ...
เจเฉเฉฑเจฒ
เจธเจฐเฉเจค: www.habr.com