Prefix Rule ๊ธฐ๋ฐ์ Compound Index ์ค๊ณ๋ฅผ ํตํ ์ฟผ๋ฆฌ ์ต์ ํ
MongoDB Indexes Finally Clicked for Me: Understanding Indexes, Compound Indexes & the Prefix Rule ๐
AI ์์ฝ
Context
๋๊ท๋ชจ ํธ๋์ญ์ ๋ฐ์ดํฐ ์กฐํ ์ ๋ฐ์ํ๋ Collection Scan์ผ๋ก ์ธํ ์ฑ๋ฅ ์ ํ ํด๊ฒฐ ํ์. ๋จ์ ๋จ์ผ ์ธ๋ฑ์ค๋ง์ผ๋ก๋ ๋ค์ค ์กฐ๊ฑด ํํฐ๋ง๊ณผ ์ ๋ ฌ ์๊ตฌ์ฌํญ์ ๋์์ ์ถฉ์กฑํ๊ธฐ ์ด๋ ค์ด ๊ตฌ์กฐ์ ํ๊ณ ์กด์ฌ.
Technical Solution
- Prefix Rule์ ์ ์ฉํ์ฌ ์ต์ข์ธก ํ๋๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ Compound Index ๊ตฌ์กฐ ์ค๊ณ
userํ๋๋ฅผ ๊ณตํต Prefix๋ก ์ค์ ํ๊ณdate,type,category๋ฅผ ๊ฐ๊ฐ ๋ณ๋ ์ธ๋ฑ์ค๋ก ๊ตฌ์ฑํ์ฌ ๋ค์ํ ์ฟผ๋ฆฌ ํจํด ๋์- ์ธ๋ฑ์ค ๋ด ๋ฐ์ดํฐ ์ ๋ ฌ ์์๋ฅผ ํ์ฉํ์ฌ ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ์ ๋ ฌ ๊ณผ์ ์์ด
.sort()์ฐ์ฐ ์ต์ ํ - ์ธ๋ฑ์ค์ ์ค์ Document๋ฅผ ๋ถ๋ฆฌ ์ ์ฅํ๋ B-Tree ๊ธฐ๋ฐ ์ฐธ์กฐ ๊ตฌ์กฐ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ๊ทผ ๊ฒฝ๋ก ๋จ์ถ
- ๋ฌด๋ถ๋ณํ ๋ค์ค ํ๋ ํตํฉ ์ธ๋ฑ์ค ๋์ ์ค์ Application์ ์ฟผ๋ฆฌ ํจํด์ ๋ง์ถ ์ธ๋ฑ์ค ์ธ๋ถํ ์ ๋ต ์ฑํ
์ค์ฒ ํฌ์ธํธ
- Compound Index ์ค๊ณ ์ ์ต์ข์ธก ํ๋(Leftmost Prefix)๊ฐ ์ฟผ๋ฆฌ ์กฐ๊ฑด์ ํฌํจ๋๋์ง ํ์ธ - ์ธ๋ฑ์ค ํ๋ ์์๋ฅผ ๊ฒฐ์ ํ ๋ ํํฐ๋ง ํจ์จ์ด ๊ฐ์ฅ ๋์ ํ๋๋ฅผ ์์ชฝ์ ๋ฐฐ์น - Read ์ฑ๋ฅ ํฅ์์ผ๋ก ์ธํด ๋ฐ์ํ๋ Write ์ง์ฐ ๋ฐ ์ ์ฅ ๊ณต๊ฐ ์ฆ๊ฐ ๋น์ฉ(Trade-off) ์ฐ์ - ๋ชจ๋ ํ๋๋ฅผ ํฌํจํ๋ ๊ฑฐ๋ ์ธ๋ฑ์ค๋ณด๋ค ๋น๋ฒํ ์ฟผ๋ฆฌ ํจํด๋ณ ์ต์ ํ๋ ์ํ ์ธ๋ฑ์ค ์กฐํฉ ๊ฒํ