select๋ ์กฐํํ ํ๋๋ฅผ ์ง์ ํ๋ ๋ฉ์๋์
๋๋ค. ํ์
์์ ํ๊ฒ ํ๋๋ฅผ ์ ํํ๊ณ , SQL ์ง๊ณ ํจ์ ๋ฐ ํํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
์ ์ฒด ํ๋ ์กฐํ
ํน์ ํ๋ ์ ํ
ํ๋ ๋ณ์นญ (Alias)
SQL ์ง๊ณ ํจ์
Puri๋ ํ์ ์์ ํ SQL ํจ์๋ค์ ์ ๊ณตํฉ๋๋ค.COUNT
SUM, AVG, MAX, MIN
๋ฌธ์์ด ํจ์
Puri.concatExpressions()๋ ๋ฐ์ธ๋ฉ๋ ๋ฆฌํฐ๋ด ๋งค๊ฐ๋ณ์์ PostgreSQL text ํ์
์บ์คํธ๋ฅผ
์ถ๊ฐํ๋ฏ๋ก ์ ์์์ฒ๋ผ ๋ฆฌํฐ๋ด๋ง ์ฌ์ฉํ ํํ์๋ ์คํํ ์ ์์ต๋๋ค. ๊ธฐ์กด Puri.concat()์
๋ฆฌํฐ๋ด์ ํ์
์ด ์ง์ ๋์ง ์์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ธ๋ฉํ๋ฉฐ ์ปฌ๋ผ์ฒ๋ผ ๋ณด์ด๋ ๋ฌธ์์ด๋ ์ปฌ๋ผ์ผ๋ก ํด์ํ์ง
์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฆฌํฐ๋ด๋ง ์ฌ์ฉํ ๋
๋ฆฝ์ ์ธ Puri.concat() ํํ์์ PostgreSQL์์ ์คํํ ์
์์ต๋๋ค. ๋ฌธ์์ด SQL ํํ์๊ณผ ๋ฆฌํฐ๋ด ํ
์คํธ๋ฅผ ์กฐํฉํ๋ ค๋ฉด Puri.concatExpressions()๋ฅผ ์ฌ์ฉํ์ธ์.
Raw SQL ํํ์
๋ณต์กํ SQL ํํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.ํ์ ๋ณ Raw ํจ์
์ค์ฒฉ ๊ฐ์ฒด ์ ํ
์ค์ฒฉ ๊ฐ์ฒด ๊ตฌ์กฐ๋ก SELECT๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.appendSelect
๊ธฐ์กด SELECT์ ํ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.Full-Text Search ํจ์
ts_highlight (PostgreSQL)
PostgreSQL์ tsvector๋ฅผ ์ฌ์ฉํ ํ์ด๋ผ์ดํ ์ ๋๋ค.parser: ์ฟผ๋ฆฌ ํ์ (๊ธฐ๋ณธ:"websearch_to_tsquery")config: ํ ์คํธ ๊ฒ์ ์ค์ (๊ธฐ๋ณธ:"simple")startSel: ์์ ํ๊ทธ (๊ธฐ๋ณธ:"<b>")stopSel: ์ข ๋ฃ ํ๊ทธ (๊ธฐ๋ณธ:"</b>")maxWords: ์ต๋ ๋จ์ด ์minWords: ์ต์ ๋จ์ด ์maxFragments: ์ต๋ ์กฐ๊ฐ ์
ts_rank (PostgreSQL)
๊ฒ์ ๊ด๋ จ๋ ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.parser: ์ฟผ๋ฆฌ ํ์ (๊ธฐ๋ณธ:"websearch_to_tsquery")config: ํ ์คํธ ๊ฒ์ ์ค์ (๊ธฐ๋ณธ:"simple")weights: [D, C, B, A] ๊ฐ์ค์น ๋ฐฐ์ดnormalization: ์ ๊ทํ ์ต์ (0-32)
PGroonga ํจ์
PGroonga ํ์ฅ์ ์ฌ์ฉํ ์ ๋ฌธ ๊ฒ์์ ๋๋ค.pg_trgm ์ ์ฌ๋ ํจ์
PostgreSQL์pg_trgm ํ์ฅ์ด ์ ๊ณตํ๋ ์ ์ฌ๋ ์ ์๋ฅผ SELECT์์ ๊ณ์ฐํฉ๋๋ค. whereFuzzy๋ก ํ๋ณด๋ฅผ ํํฐ๋งํ ๋ค, ์ด ํจ์๋ค๋ก ์ปฌ๋ผ๋ณ ๊ฐ์ค์น ์ ์๋ฅผ ๋งค๊ธธ ์ ์์ต๋๋ค.
SqlExpression<"number">๋ฅผ
๋ฐํํฉ๋๋ค. ์ด ํํ์์ rawNumber์ ์กฐํฉํ์ฌ ์ปฌ๋ผ๋ณ ๊ฐ์ค์น ์ ์๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ๋ ์
๋ ฅ ํํ์์ null ๊ฐ๋ฅ์ฑ์ ์ ์งํฉ๋๋ค.
jsonText()๋ nullable ๋ฌธ์์ด ํํ์์ ์์ฑํ๋ฉฐ, ์ด๋ฅผ ์ ์ฌ๋ ํจ์์ ์ ๋ฌํ๋ฉด
SqlExpression<"number", true>๋ฅผ ๋ฐํํ๊ณ ์ ํ ๊ฒฐ๊ณผ๋ number | null์
๋๋ค. ์ผ๋ฐ ์ปฌ๋ผ์ด๋ null์ด
์๋ ํํ์์ ์ ๋ฌํ๋ฉด SqlExpression<"number">๋ฅผ ๋ฐํํ๊ณ ์ ํ ๊ฒฐ๊ณผ๋ number์
๋๋ค. pg_trgm
ํ์ฅ์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.์ค์ ์์
- ์ฌ์ฉ์ ํต๊ณ
- ์ฃผ๋ฌธ ์์ฝ
- ์ฌ์ฉ์ + ๊ฒ์๋ฌผ
- ๊ฒ์ + ํ์ด๋ผ์ดํ
ํ์ ์์ ์ฑ
SELECT์ ๋ฐํ ํ์ ์ ์๋์ผ๋ก ์ถ๋ก ๋ฉ๋๋ค.์ฃผ์์ฌํญ
1. select vs appendSelect
2. ํ ์ด๋ธ ์ ๋์ฌ ํ์
3. Raw SQL ํ์ ์ง์
๋ค์ ๋จ๊ณ
where
์กฐ๊ฑด ํํฐ๋งํ๊ธฐ
join
ํ
์ด๋ธ ์กฐ์ธํ๊ธฐ
order-by
๊ฒฐ๊ณผ ์ ๋ ฌํ๊ธฐ
advanced-methods
๊ณ ๊ธ ์ฟผ๋ฆฌ ๋ฉ์๋