แแแแกแแแแ แแแแแฏแแ แ แแแงแแแแแแแก แแคแแกแแแแแแ แแแแแ แฅแแแงแแแก แแแกแจแขแแแแ แแฆแ แแชแฎแแแก
แแแแขแแ, แแแกแแแแแ แ แแ แแ แแก, แ แแ แแแแแ แแ แแฎแแ แแแแแแแแแแแแ โแแซแแแโ แแแแฎแแแแแแ แแ แ-แแ แ แงแแแแแแ แแแขแแแ แแฃแ แแแแแชแแแแ แแแแแแ - แฉแแแแก แกแแแฃแแแ แแ.
แฃแคแ แ แแแขแแช, แจแแแแแแแแ แแแแแซแแแแแ แแแแแแแแแแ แกแแแแขแแ แแกแ แแแแแแแแ แฏแแ แแแขแแแแแแชแแ แแ แจแแแแแ แจแแกแ แฃแแแแแก แแแแ แแแแชแแ แแแแฎแแแแ แแแกแ แแแแแแแแแแ แฃแแ แแแฎแแแฌแแ แ แแแแแแแแ แแฃแแแแก แแแแ , แ แแแแแแแแแ แแแแแแฃแแ แแแฅแแแแแแแ แแฎแแแแ แกแแฃแแแแแกแ แแแแแ แแฎแแแแแ.
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;
แแกแ, แแก แแ แแก ... 26 ms, 31 MB แฌแแแแแฎแฃแแ แแแแแชแแแแแ แแ 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 ms. แแ 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: "แแแกแ แฃแแแแ แคแแแแแ"
แแแแ แแ แแ แแก แแแแแฅแกแ, แ แแแแแแช แกแแจแฃแแแแแแก แแแซแแแแ แแแซแแแแแ แแแแแแแแแแก แแแฎแแแแแ แแ แแแแแ แแแแแแงแแแแ แแแฎแแ แแกแฎแแแ แแแ แแแแฃแ แแ - แ แแแฃแแแ แฃแแ แแฎแ!
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 แแ แฏแแแ แแแแแแแแ, แแแแ แแ แกแขแแขแแกแขแแแฃแ แแ แแแแแแแก, แ แแ แแแแฎแแแแแแแก 10%-แแ แแแแแแแ แแฆแฌแแแก แแแแ แ แแแแแแก แจแแกแ แฃแแแแแก. แแแฃ, แแแแแแแแแก แฌแแแแกแฌแแ แชแแแแแแ แแกแแแ แขแแแแฃแ แ แจแแแฆแฃแแแแแแ, แฉแแแ แจแแแซแแแแ แกแแ แแแ แแก แ แแกแฃแ แกแแแแก แแแแแแแ แแแฎแแแ แแแแก แจแแแชแแ แแแ แแแแฅแแแก แแแแกแฏแแ !
1.5*: แฉแแแ แจแแแแแซแแแ แแแแแแแแแ แคแแแแแก แแแ แแจแ
แแแแแ LIKE
แฉแแแ แฎแแแ แจแแแแแจแแแแก แแ แแกแฌแแ แ แแแฎแแ แแกแฎแแแแก แแแแแงแแแแแแจแ. แแแแ แแ แแแกแ แแแงแแแแแ แจแแกแแซแแแแแแแ "แกแฌแแ แแแแแ" USING แแแแ แแขแแ แแก แแแแแแแแแ:
แแแแฃแแแกแฎแแแแแ แแแ แแฃแแแแแ
ASC
. แแแ แแ แแแแกแ, แแฅแแแ แจแแแแซแแแแ แแแฃแแแแแ แแแแแ แแขแฃแแ แแแฎแแ แแกแฎแแแแก แแแแ แแขแแ แแก แกแแฎแแแ แแฃแแฅแขแจแUSING
. แแแแแแแแแก แแแแ แแขแแ แ แฃแแแ แแงแแก B-แฎแแก แแแแ แแขแแ แแแแก แแแแแแ แแ แแฏแแฎแแก แฌแแแ แแ แแแแแแแ แแ แแแขแ.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 แฃแแแ แ แแ แแแฃแแแแแแแแ
แกแแแฆแแช แแกแแแ แแแแแฃแชแแแก แแ แแชแแกแจแ แแ-2 แฅแแแแแซแแแแแแแ แแแแแแ แแ NOT LIKE
แแแแแแแ แแแแ. แแแกแแแแแแ, แ แแ แแแแก แจแแแแแ UNION ALL
แแแแฌแงแ แแแแ แฃแแแแ แแแแแแ แแ แฉแแแแฌแแ แ แแ แฏแแ - แฏแแ แแแแแแแแ แกแขแ แแฅแแแแก แแแกแแฌแงแแกแจแ, แจแแแแแ แแ - แแ แกแขแ แแฅแแแแก แแแ แแแแ แกแแขแงแแแก แแแกแแฌแงแแกแจแ. แแแแแขแจแ, แแ-2 แฅแแแแแแแแฎแแแก แงแแแแ แฉแแแแฌแแ แ แจแแแซแแแแ แแแแฎแแแแแแก แแแ แแแแแก แฉแแแแฌแแ แแแก.
แ แแก แแแแแแแก แแแแแแแแแ แ แแแแแแแก แซแแแแแก แแแชแแแแ?.. แแแแฎแแ แแ แแ!
- แแแแ แแแแแแ แแแแ แแ แแแแแแแฃแ แ แแแแฃแจแแแ
- แแแแแแงแแแแ 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>;
แแแฃ, แแแกแแแแแแ, แ แแ แจแแแแแ, แกแแแแแแ แฏแแแจแ, แแฃแกแขแแ แแแแแแ, แแแแ แแ แแ -2 CTE แฅแแแแแซแแแแแจแ "แแแคแ แแแแก" แจแแแกแ แแแชแแแแแแ แแแฆแแแ แแแฎแแ แแ แแแแก แแแ แแจแแช แแ, แแจแแแ แแ แฃแคแ แ แแแแแฎแแแ.
แแแแ แแ แแก แแ แแ แแก แงแแแแแแ แกแแแฌแฃแฎแแ แ. แแแแแแแแ แแแแแแแแแ แแ แกแแฎแแแ แแ แฉแแแ DISTINCT
แแ แ แแแแแ แแขแฃแแ, แแ แแแแ แงแแแแ แกแคแแ แแกแแแแก แแ แแแ แแฃแแแ แฉแแแแฌแแ แแแ, แจแแแแแ sub_query แแแแ - แฅแแแแแแฎแแแแแก แจแแแแแ - แแแขแแแแขแฃแ แแ แฉแแ แแฃแแ แแงแ แแฅ. แแฎแแ, แจแแกแแกแ แฃแแแแแแ DISTINCT
, แแแแแชแแแแ แแแแ แฃแแแ แฃแแแ แจแแกแ แฃแแแแฃแแแงแ แแ แ 10 แฅแแแแแแฎแแแแ, แแ แแแแ แงแแแแ + 2!
2.4: แฃแแแ แแแแแก แงแแแแแกแ แแแแแแจแ แแแแแแ!
แแกแ แ แแ, แแแแแแแแแ แแแ แชแฎแแแ แแแแแแ - แแแ แแ แแฌแฃแฎแแแแแแ, แ แแแแแ แแแแฎแแแ แแแแแก แแจแแแ แแ แแ แฐแฅแแแแ แกแแแแแ แแกแ แแแแแแแแแ, แ แแ "แแแแ แแแแแแ" แ แแแกแขแ แ แแแแจแแแแแแแแ N แแแแจแแแแแแแแแแ, แงแแแแแ แแแแแแแแ "แแแแ แแแก" แแแฆแแแแก แฅแ แแแแแฃแแ แจแแแแแแแแ.
แกแแแแ แกแฎแแ แแแแแ แขแแแแแขแแก แแแแแแแแแ แแแ แแ แแแแแแแแ แแแแแแ แแ แแ แแแแแแแแแก แแกแแแ แแแกแแฎแแ แฎแแแแแ แแแแแแแก แแแแแงแแแแแ แแแแแแแ แแแแแ แซแแแแแกแแแแก - แแแฃ แ แแฆแแช แแแแฃแจแแแแ แแแฆแแแ แแแฌแแแก, แแคแแแขแ แแแ แแแก แแแแแขแแแแแ แแแ แแแแแแ, แแฎแแขแแแ แจแแแแแก, แจแแแแแ แจแแแแแ แแแญแแ แก (แ แแช แฉแแแแก แจแแแแฎแแแแแจแ แแแแฆแฌแแแ N-แแก แแแแ แแแ) แแ แแกแ แแแแ แซแแแแแ แกแแแแ แแแ แแแก แแ แจแแแแแกแแแ.
แแแแแแแ, แแแญแแ แแ แแแแฃแจแจแ N แแแแฆแฌแแ แแแแฅแแแก 17K แแแแจแแแแแแแแแก, แแ แแฎแแแแ แแ แ แแฆแแจแ, แกแฃแ แแชแแ แ, 4K แแกแแแ แแแแฎแแแแ แจแแกแ แฃแแแ "แฏแแญแแแก แแแกแฌแแ แแ". แแแแ แแแแแแแ แแแแแแแ แแแแกแแแแแ แ 1 แแ แแแฎแกแแแ แแแ แแแแ แแแแแแ แแแแแ...
แกแแแ แแ แฏแแแจแ
แฌแงแแ แ: www.habr.com