เดฌเดซเดฑเตเดเตพ เดเตเดฃเตเดเตเดตเดฐเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดธเตเดเตเดทเดฟเดเตเดเตเด...
เดเดฐเต เดเตเดฑเดฟเดฏ เดเตเดฆเตเดฏเด เดเดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต, PostgreSQL-เตฝ เดเตเดฆเตเดฏเดเตเดเตพ เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฟเดฒ เดธเดพเตผเดตเดคเตเดฐเดฟเด เดธเดฎเตเดชเดจเดเตเดเตพ เดจเตเดเตเดเดพเด. เดจเดฟเดเตเดเตพ เด
เดต เดเดชเดฏเตเดเดฟเดเตเดเดฃเต เดตเตเดฃเตเดเดฏเต เดเดจเตเดจเดคเต เดจเดฟเดเตเดเดณเตเดเตเดคเดพเดฃเต, เดชเดเตเดทเต เด
เดตเดฏเตเดเตเดเตเดฑเดฟเดเตเดเต เด
เดฑเดฟเดฏเตเดจเตเดจเดคเต เดฎเตเดฒเตเดฏเดตเดคเตเดคเดพเดฃเต.
PG-เดฏเตเดเต เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดเดฟเดฒ เดชเดคเดฟเดชเตเดชเตเดเดณเดฟเตฝ, เดทเตเดกเตเดฏเตเดณเตผ เดเตเดเตเดคเตฝ เดฎเดฟเดเตเดเตเดเดจเดพเดเตเดฎเตเดชเตเตพ เดธเตเดฅเดฟเดคเดฟ เดฎเดพเดฑเดฟเดฏเตเดเตเดเดพเด, เดเดจเตเดจเดพเตฝ 9.4/9.6-เดจเต เดเดคเต เดเดตเดฟเดเตเดฏเตเดณเตเดณ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเดฟเดฒเต เดชเตเดฒเต เดเดเดฆเตเดถเด เดธเดฎเดพเดจเดฎเดพเดฃเต.
เดจเดฎเตเดเตเดเต เดเดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เด เดญเตเดฏเตผเดคเตเดฅเดจ เดเดเตเดเตเดเดพเด:
SELECT
TRUE
FROM
"ะะพะบัะผะตะฝั" d
INNER JOIN
"ะะพะบัะผะตะฝัะ ะฐััะธัะตะฝะธะต" doc_ex
USING("@ะะพะบัะผะตะฝั")
INNER JOIN
"ะขะธะฟะะพะบัะผะตะฝัะฐ" t_doc ON
t_doc."@ะขะธะฟะะพะบัะผะตะฝัะฐ" = d."ะขะธะฟะะพะบัะผะตะฝัะฐ"
WHERE
(d."ะะธัะพ3" = 19091 or d."ะกะพัััะดะฝะธะบ" = 19091) AND
d."$ะงะตัะฝะพะฒะธะบ" IS NULL AND
d."ะฃะดะฐะปะตะฝ" IS NOT TRUE AND
doc_ex."ะกะพััะพัะฝะธะต"[1] IS TRUE AND
t_doc."ะขะธะฟะะพะบัะผะตะฝัะฐ" = 'ะะปะฐะฝะ ะฐะฑะพั'
LIMIT 1;
เดชเดเตเดเดฟเดเดฏเตเดฏเตเด เดซเตเตฝเดกเต เดจเดพเดฎเดเตเดเดณเตเดฏเตเด เดเตเดฑเดฟเดเตเดเตเดซเตเตฝเดกเตเดเดณเตเดเตเดฏเตเด เดเตเดฌเดฟเดณเตเดเดณเตเดเตเดฏเตเด "เดฑเดทเตเดฏเตป" เดชเตเดฐเตเดเตพ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดชเดฐเดฟเดเดฃเดฟเดเตเดเดพเด, เดชเดเตเดทเต เดเดคเต เดฐเตเดเดฟเดฏเตเดเต เดเดพเดฐเตเดฏเดฎเดพเดฃเต. เดเดจเตเดคเตเดเตเดพเดฃเตเดเตเดจเตเดจเดพเดฒเต
เดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ เดชเตเดฒเดพเตป เดจเตเดเตเดเดพเด:
144ms, เดเดเดฆเตเดถเด 53K เดฌเดซเดฑเตเดเตพ - เด เดคเดพเดฏเดคเต, 400MB-เดฏเดฟเตฝ เดเตเดเตเดคเตฝ เดกเดพเดฑเตเดฑ! เดเดเตเดเดณเตเดเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เดธเดฎเดฏเดคเตเดคเต เด เดตเดฏเตเดฒเตเดฒเดพเด เดเดพเดทเตเดฏเดฟเดฒเดพเดฃเตเดเตเดเดฟเตฝ เดเดเตเดเตพ เดญเดพเดเตเดฏเดตเดพเดจเตเดฎเดพเดฐเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เด เดฒเตเดฒเดพเดคเตเดคเดชเดเตเดทเด เดกเดฟเดธเตเดเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเดเตเดเตเดฎเตเดชเตเตพ เด เดคเต เดชเดฒ เดฎเดเดเตเดเต เดธเดฎเดฏเดฎเตเดเตเดเตเดเตเด.
เด เตฝเดเตเดฐเดฟเดคเด เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต!
เดเดคเตเดเตเดเดฟเดฒเตเด เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดเดเตเดเดจเตเดฏเตเดเตเดเดฟเดฒเตเด เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด
เดคเต เดเดจเตเดคเดพเดฃเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดจเตเดจเต เดจเดฟเดเตเดเตพ เดเดฆเตเดฏเด เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดฃเด.
เดกเดพเดฑเตเดฑเดพเดฌเตเดธเต เดเดเดจเดฏเตเดเต เดตเดฟเดเดธเดจเด เดเดชเตเดชเตเตพ เด เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดชเดฐเดฟเดงเดฟเดเตเดเต เดชเตเดฑเดคเตเดคเต เดตเดฟเดเดพเด, เดจเดฎเตเดเตเดเต เดคเดพเดฐเดคเดฎเตเดฏเตเดจ "เดตเดฟเดฒเดเตเดฑเดเตเดเดคเต" เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเต เดธเดฎเตเดฎเดคเดฟเดเตเดเตเด. เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดฎเดพเดฑเตเดฑเดฟเดฏเตเดดเตเดคเตเด เดเตเดเดพเดคเต/เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดเดฟเดฒ เดเดพเดฐเตเดฏเดเตเดเตพ เด
เดเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดเดฐเตเดเตเดเตเด เดธเตเดเดฟเดเดเตพ.
เด
เดคเดฟเดจเดพเตฝ เด
เดญเตเดฏเตผเดคเตเดฅเดจ:
- เดเตเดฑเดเตเดเดคเต เดเดฟเดฒ เดชเตเดฐเดฎเดพเดฃเดเตเดเดณเตเดเต เดจเดฟเดฒเดจเดฟเตฝเดชเตเดชเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต
- เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเด เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณเดคเตเดฎเดพเดฏ เด
เดตเดธเตเดฅเดฏเดฟเตฝ
- เดเดตเดฟเดเต เดฐเดเดฏเดฟเดคเดพเดตเต เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เด
เดตเดคเดพเดฐเดเตป เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดเตเดตเดจเดเตเดเดพเดฐเดจเดพเดฃเต
เดเตเดฐเตเด + เดชเดฐเดฟเดงเดฟ 1
เดเดฐเต เดตเดฒเดฟเดฏ เดเดฃเตเดฃเด เดชเดเตเดเดฟเดเดเตพ เดเดฆเตเดฏเด เดเตเดฐเตเดจเตเดจเดฟเดเดคเตเดคเต เดเดฐเต เดเตเดฆเตเดฏเด เดเดดเตเดคเตเดจเตเดจเดคเต เดชเดฒเดชเตเดชเตเดดเตเด เดเดฐเต เดกเดตเดฒเดชเตเดชเตผเดเตเดเต เดเดณเตเดชเตเดชเดฎเดพเดฃเต, เดคเตเดเตผเดจเตเดจเต เด เดฎเตเดดเตเดตเตป เดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเด เดเดฐเต เดฑเตเดเตเดเตเตผเดกเต เดฎเดพเดคเตเดฐเดฎเต เด
เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเตเดณเตเดณเต. เดเดจเตเดจเดพเตฝ เดกเตเดตเดฒเดชเตเดชเตผเดเตเดเต เดเดณเตเดชเตเดชเด เดเดจเตเดจเดคเดฟเดจเตผเดคเตเดฅเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดจเต เดเตเดเตเดคเตฝ เดเดพเดฐเตเดฏเดเตเดทเดฎเดคเดฏเตเดณเตเดณเดคเต เดเดจเตเดจเดฒเตเดฒ.
เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ 3 เดชเดเตเดเดฟเดเดเตพ เดฎเดพเดคเตเดฐเดฎเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเตเดณเตเดณเต - เด
เดคเดฟเดจเตเดฑเต เดซเดฒเด เดเดจเตเดคเดพเดฃเต ...
เดจเดฎเตเดเตเดเต เดเดฆเตเดฏเด "เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเต เดคเดฐเด" เดชเดเตเดเดฟเดเดฏเตเดฎเดพเดฏเตเดณเตเดณ เดเดฃเดเตเดทเตป เดเดดเดฟเดตเดพเดเตเดเดพเด, เด เดคเต เดธเดฎเดฏเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดจเตเดเต เดชเดฑเดฏเตเด เดเดเตเดเดณเตเดเต เดคเดฐเด เดฑเตเดเตเดเตเตผเดกเต เด เดฆเตเดตเดฟเดคเตเดฏเดฎเดพเดฃเต (เดเดเตเดเตพเดเตเดเต เดเดคเต เด เดฑเดฟเดฏเดพเด, เดชเดเตเดทเต เดทเตเดกเตเดฏเตเดณเตผเดเตเดเต เดเดคเตเดตเดฐเต เดเดฐเต เดเดถเดฏเดตเตเดฎเดฟเดฒเตเดฒ):
WITH T AS (
SELECT
"@ะขะธะฟะะพะบัะผะตะฝัะฐ"
FROM
"ะขะธะฟะะพะบัะผะตะฝัะฐ"
WHERE
"ะขะธะฟะะพะบัะผะตะฝัะฐ" = 'ะะปะฐะฝะ ะฐะฑะพั'
LIMIT 1
)
...
WHERE
d."ะขะธะฟะะพะบัะผะตะฝัะฐ" = (TABLE T)
...
เด เดคเต, เดชเดเตเดเดฟเด/เดธเดฟเดเดฟเด เดเดฐเตเดฑเตเดฑ เดฑเตเดเตเดเตเตผเดกเดฟเดจเตเดฑเต เดเดฐเตเดฑเตเดฑ เดซเตเตฝเดกเต เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดชเดฟเดเดฟเดฏเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเตเดชเตเดฒเต เดเดดเตเดคเดพเด.
d."ะขะธะฟะะพะบัะผะตะฝัะฐ" = (SELECT "@ะขะธะฟะะพะบัะผะตะฝัะฐ" FROM T LIMIT 1)
PostgreSQL เดเตเดฆเตเดฏเดเตเดเดณเดฟเตฝ เด เดฒเดธเดฎเดพเดฏ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตฝ
BitmapOr vs UNION
เดเดฟเดฒ เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ, เดฌเดฟเดฑเตเดฑเตเดฎเดพเดชเตเดชเต เดนเตเดชเตเดชเต เดธเตเดเดพเตป เดเดเตเดเตพเดเตเดเต เดตเดณเดฐเตเดฏเดงเดฟเดเด เดเดฟเดฒเดตเดพเดเตเด - เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดเตเดเดณเตเดเต เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดงเดพเดฐเดพเดณเด เดฑเตเดเตเดเตเตผเดกเตเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฏ เด
เดตเดธเตเดฅ เดชเดพเดฒเดฟเดเตเดเตเดฎเตเดชเตเตพ. เดเดพเดฐเดฃเด เดเดเตเดเตพเดเตเดเต เด
เดคเต เดฒเดญเดฟเดเตเดเต เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เด
เดตเดธเตเดฅ BitmapOr เดเดฏเดฟ เดฎเดพเดฑเดฟ- เดชเดฆเตเดงเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด.
เดจเดฎเตเดเตเดเต เดฏเดฅเดพเตผเดคเตเดฅ เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดฎเดเดเตเดเดพเด - เด
เดคเดฟเดจเดจเตเดธเตเดคเดฎเดพเดฏ เดเดฐเต เดฑเตเดเตเดเตเตผเดกเต เดจเดฎเตเดเตเดเต เดเดฃเตเดเตเดคเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต เดเตผเดเตเดเตเด เดตเตเดฏเดตเดธเตเดฅเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต - เด
เดคเดพเดฏเดคเต, เดฐเดฃเตเดเต เดตเตเดฏเดตเดธเตเดฅเดเดณเดฟเดฒเตเด เดเดฒเตเดฒเดพ 59K เดฑเตเดเตเดเตเตผเดกเตเดเดณเตเด เดคเดฟเดฐเดฏเตเดฃเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ. เดเดฐเต เดตเตเดฏเดตเดธเตเดฅ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดฐเต เดตเดดเดฟเดฏเตเดฃเตเดเต, เดเตเดเดพเดคเต เดเดฆเตเดฏเดคเตเดคเตเดคเดฟเตฝ เดเดจเตเดจเตเด เดเดฃเตเดเตเดคเตเดคเดพเดคเตเดคเดชเตเดชเตเตพ เดฎเดพเดคเตเดฐเด เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดเตเด. เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดกเดฟเดธเตเตป เดเดเตเดเดณเต เดธเดนเดพเดฏเดฟเดเตเดเตเด:
(
SELECT
...
LIMIT 1
)
UNION ALL
(
SELECT
...
LIMIT 1
)
LIMIT 1
"เดฌเดพเดนเตเดฏ" เดชเดฐเดฟเดงเดฟ 1 เดเดฆเตเดฏ เดฑเตเดเตเดเตเตผเดกเต เดเดฃเตเดเตเดคเตเดคเตเดฎเตเดชเตเตพ เดคเดฟเดฐเดฏเตฝ เด เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเตเดจเตเดจเต. เดเดฆเตเดฏ เดฌเตเดฒเตเดเตเดเดฟเตฝ เดเดคเต เดเดคเดฟเดจเดเด เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดพเตฝ, เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดฌเตเดฒเตเดเตเดเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดฟเดฒเตเดฒ (เดเดฐเดฟเดเตเดเดฒเตเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ เดธเดเดฌเดจเตเดงเดฟเดเตเดเต).
"เดเตเดธเต เดชเตเดฐเดเดพเดฐเด เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณ เดธเดพเดนเดเดฐเตเดฏเดเตเดเตพ เดฎเดฑเดฏเตเดเตเดเตเดจเตเดจเต"
เดฏเดฅเดพเตผเดคเตเดฅ เด
เดจเตเดตเตเดทเดฃเดคเตเดคเดฟเตฝ เด
เดเตเดเตเดฏเดฑเตเดฑเด เด
เดธเตเดเดฐเตเดฏเดฎเตเดณเตเดณ เดเดฐเต เดจเดฟเดฎเดฟเดทเดฎเตเดฃเตเดเต - "เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเต เดเดเตเดธเตเดฑเตเดฑเตปเดทเตป" เดเดจเตเดจ เด
เดจเตเดฌเดจเตเดง เดชเดเตเดเดฟเดเดฏเตโเดเตเดเตเดคเดฟเดฐเดพเดฏ เดจเดฟเดฒ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต. เดชเดฆเดชเตเดฐเดฏเตเดเดคเตเดคเดฟเดฒเต เดฎเดฑเตเดฑเต เดตเตเดฏเดตเดธเตเดฅเดเดณเตเดเต เดธเดคเตเดฏเด เดชเดฐเดฟเดเดฃเดฟเดเตเดเดพเดคเต เดคเดจเตเดจเต (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, d.โเดเดฒเตเดฒเดพเดคเดพเดเตเดเดฟเดฏเดคเตโ เดถเดฐเดฟเดฏเดฒเตเดฒ), เด เดเดฃเดเตเดทเตป เดเดฒเตเดฒเดพเดฏเตโเดชเตเดชเตเดดเตเด เดเดเตโเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด โเดตเดฟเดญเดตเดเตเดเตพ เดเตเดฒเดตเตโ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เด
เดตเดฏเดฟเตฝ เดเตเดเตเดคเดฒเต เดเตเดฑเดตเต เดเตเดฒเดตเดดเดฟเดเตเดเตเด - เด เดชเดเตเดเดฟเดเดฏเตเดเต เดตเดฒเตเดชเตเดชเดคเตเดคเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฆเตเดฏเด เดชเดฐเดฟเดทเตโเดเตเดเดฐเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด, เด
เดคเตเดตเดดเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดฑเตเดเตเดเตเตผเดกเดฟเดจเดพเดฏเตเดณเตเดณ เดคเดฟเดฐเดฏเตฝ เดถเดฐเดฟเดเตเดเตเด เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเตเตพ เดฎเดพเดคเตเดฐเดฎเต เดธเดเดญเดตเดฟเดเตเดเต:
SELECT
...
FROM
"ะะพะบัะผะตะฝั" d
WHERE
... /*index cond*/ AND
CASE
WHEN "$ะงะตัะฝะพะฒะธะบ" IS NULL AND "ะฃะดะฐะปะตะฝ" IS NOT TRUE THEN (
SELECT
"ะกะพััะพัะฝะธะต"[1] IS TRUE
FROM
"ะะพะบัะผะตะฝัะ ะฐััะธัะตะฝะธะต"
WHERE
"@ะะพะบัะผะตะฝั" = d."@ะะพะบัะผะตะฝั"
)
END
เดเดฐเดฟเดเตเดเตฝ เดฒเดฟเดเตเดเต เดเตเดฏเตโเดค เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเดณเดฟเดฒเตเดเตเดเต เดซเดฒเดคเตเดคเดฟเดจเต เดซเตเตฝเดกเตเดเดณเตเดจเตเดจเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด
เดชเตเดชเตเตพ เดเดฐเต เดธเดฌเตเดเตเดตเดฑเดฟเดฏเดฟเตฝ JOIN-เดจเต เดเดฐเต เดตเตเดฏเดตเดธเตเดฅเดฏเดพเดเตเดเดฟ เดฎเดพเดฑเตเดฑเดพเดจเตเดณเตเดณ เด
เดตเดธเดฐเดฎเตเดฃเตเดเต.
เดธเตเดเดฟเดเดฏเดฟเดฒเดพเดเตเดเดฟเดฏ เดซเตเตฝเดกเตเดเตพ "CASE เดฌเตเดฐเดพเดเตเดเดฑเตเดฑเตเดเตพเดเตเดเต เดชเตเดฑเดคเตเดคเต" เดตเดฟเดเดพเด, เดฑเตเดเตเดเตเตผเดกเดฟเตฝ เดจเดฟเดจเตเดจเต WHEN เดฌเตเดฒเตเดเตเดเดฟเดฒเตเดเตเดเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดตเตเดฏเดตเดธเตเดฅเดเตพ เดเตเตผเดเตเดเตเด - เดเดชเตเดชเตเตพ "เดนเตเดตเดฟ" เดเตเดฆเตเดฏเด เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเดคเต THEN-เดฒเตเดเตเดเต เดชเตเดเตเดฎเตเดชเตเตพ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต.
เดเดจเตเดฑเต เด เดตเดธเดพเดจ เดจเดพเดฎเด "เดเดเต"
เดฎเตเดเดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเด เดเดฒเตเดฒเดพ เดฎเตเดเตเดเดพเดจเดฟเดเตเดธเตเดเดณเตเดฎเดพเดฏเตเด เดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ เดเตเดฆเตเดฏเด เดเดเตเดเตพ เดถเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต:
WITH T AS (
SELECT
"@ะขะธะฟะะพะบัะผะตะฝัะฐ"
FROM
"ะขะธะฟะะพะบัะผะตะฝัะฐ"
WHERE
"ะขะธะฟะะพะบัะผะตะฝัะฐ" = 'ะะปะฐะฝะ ะฐะฑะพั'
)
(
SELECT
TRUE
FROM
"ะะพะบัะผะตะฝั" d
WHERE
("ะะธัะพ3", "ะขะธะฟะะพะบัะผะตะฝัะฐ") = (19091, (TABLE T)) AND
CASE
WHEN "$ะงะตัะฝะพะฒะธะบ" IS NULL AND "ะฃะดะฐะปะตะฝ" IS NOT TRUE THEN (
SELECT
"ะกะพััะพัะฝะธะต"[1] IS TRUE
FROM
"ะะพะบัะผะตะฝัะ ะฐััะธัะตะฝะธะต"
WHERE
"@ะะพะบัะผะตะฝั" = d."@ะะพะบัะผะตะฝั"
)
END
LIMIT 1
)
UNION ALL
(
SELECT
TRUE
FROM
"ะะพะบัะผะตะฝั" d
WHERE
("ะขะธะฟะะพะบัะผะตะฝัะฐ", "ะกะพัััะดะฝะธะบ") = ((TABLE T), 19091) AND
CASE
WHEN "$ะงะตัะฝะพะฒะธะบ" IS NULL AND "ะฃะดะฐะปะตะฝ" IS NOT TRUE THEN (
SELECT
"ะกะพััะพัะฝะธะต"[1] IS TRUE
FROM
"ะะพะบัะผะตะฝัะ ะฐััะธัะตะฝะธะต"
WHERE
"@ะะพะบัะผะตะฝั" = d."@ะะพะบัะผะตะฝั"
)
END
LIMIT 1
)
LIMIT 1;
เดธเตเดเดฟเดเดเตพ [เดเดคเดฟเดฒเตเดเตเดเต] เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
UNION เดธเดฌเตเดฌเตเดฒเตเดเตเดเตเดเดณเดฟเดฒเต เดเตปเดกเตเดเตโเดธเต เดเตเดฏเตโเดค เด
เดตเดธเตเดฅเดเตพ เด
เตฝเดชเตเดชเด เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดฒเดจเด เดฒเดญเดฟเดเตเด เดเดฐเต เดเดฃเตเดฃเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเต - เดเดพเดฐเดฃเด เดเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเดเด เด
เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดธเตเดเดฟเดเดเตพ เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดเดฃเตเดเต. เด
เดต เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เด
เดคเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเตเดฒเตเดฏเดตเดคเตเดคเดพเดฃเต: เดชเตเดฐเดฎเดพเดฃเด(เดตเตเดฏเดเตเดคเดฟ3, เดชเตเดฐเดฎเดพเดฃ เดคเดฐเด) ะธ เดชเตเดฐเดฎเดพเดฃเด (เดชเตเดฐเดฎเดพเดฃเดคเตเดคเดฟเดจเตเดฑเต เดคเดฐเด, เดเตเดตเดจเดเตเดเดพเดฐเตป).
ROW เดตเตเดฏเดตเดธเตเดฅเดเดณเดฟเดฒเต เดซเตเตฝเดกเตเดเดณเตเดเต เดเตเดฐเดฎเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดชเตเดฒเดพเดจเดฑเตเดเต เดเดพเดดเตเดเดชเตเดชเดพเดเดฟเตฝ, เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเดดเตเดคเดพเด (A, B) = (constA, constB)เดเดชเตเดชเด (B, A) = (constB, constA). เดเดจเตเดจเดพเตฝ เดฑเตเดเตเดเตเตผเดกเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เดธเตเดเดฟเดเดฏเดฟเดฒเต เดซเตเตฝเดกเตเดเดณเตเดเต เดเตเดฐเดฎเดคเตเดคเดฟเตฝ, เด
เดคเตเดคเดฐเดฎเตเดฐเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดชเดฟเดจเตเดจเตเดเต เดกเตเดฌเดเต เดเตเดฏเตเดฏเดพเตป เดเตเดเตเดคเตฝ เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต.
เดเดจเตเดคเดพเดฃเต เดชเตเดฒเดพเดจเดฟเตฝ เดเดณเตเดณเดคเต?
เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ, เดเดเตเดเตพ เดจเดฟเตผเดญเดพเดเตเดฏเดตเดพเดจเตเดฎเดพเดฐเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดฆเตเดฏเดคเตเดคเต UNION เดฌเตเดฒเตเดเตเดเดฟเตฝ เดเดจเตเดจเตเด เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดฏเดฟเดฒเตเดฒ, เด
เดคเดฟเดจเดพเตฝ เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต เด
เดชเตเดชเตเดดเตเด เดจเดฟเตผเดตเตเดตเดนเดฟเดเตเดเต. เดเดจเตเดจเดพเตฝ เด
เดเตเดเดจเตเดฏเดพเดฃเตเดเตเดเดฟเดฒเตเด - เดฎเดพเดคเตเดฐเด 0.037ms เดเด 11 เดฌเดซเดฑเตเดเดณเตเด!
เดเดเตเดเตพ เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดตเตเดเดคเตเดคเดฟเดฒเดพเดเตเดเตเดเดฏเตเด เดฎเตเดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต เดกเดพเดฑเตเดฑ เดชเดฎเตเดชเดฟเดเดเต เดเตเดฑเดฏเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต เดเดฏเดฟเดฐเดเตเดเดฃเดเตเดเดฟเดจเต เดคเดตเดฃ, เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเตเดเตเดจเดฟเดเตเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต - เดเดฐเต เดเตเดฑเดฟเดฏ เดเตเดชเตเดชเดฟ-เดชเตเดธเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดจเดฒเตเดฒ เดซเดฒเด. ๐
เด
เดตเดฒเดเดฌเด: www.habr.com