์ฑ ์ ์ฝ๋ ์ฌ๋๋ค์ ๋ณดํต ์ฝ๊ธฐ์ ์ ๋ชฉ์ฐจ๋ฅผ ๋จผ์ ์ดํด๋ณธ๋ค. ๋ชฉ์ฐจ๋ฅผ ์ดํด๋ณด๋ฉด ์ฑ ์ ์ฝ๋ ๋ถ๋ถ์ด ์ด๋ค ํ์ด์ง์ธ์ง ์ ์ ์๊ณ ์ฑ ์ 60ํผ์ผํธ ์ ๋ ์ฝ์๋ค ๊ฐ์ ํ๋ฉด ์ผ๋จ ์ฑ ์ ์ ๋ฐ ๋ถํฐ ์ฝ์๋ ๋ถ๋ถ์ ์ฐพ์ ๊ฒ์ด๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ ๋ถํฐ ์์๋๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค. ์ด๋ฌํ ๋นํจ์จ์ ์ธ ๋ฐฉ์์ ๊ฐ์ ํ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ๋ฐ๋ก index์ด๋ค.
์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ํ ๊ฒ์ ์๋๋ฅผ ํฅ์์์ผ์ฃผ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ธ๋ฑ์ค์ ๊ตฌ์กฐ๋ ์ธ๋ฑ์ค๊ฐ ์ ๋ ฌํ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ์ ์ฅ๋ ์๋ณธ ํ ์ด๋ธ์ ํด๋น ๋ ์ฝ๋์ ๋ํ ํฌ์ธํฐ๋ฅผ ์ ์งํ๋ ๊ตฌ์กฐ์ด๋ค. ์ธ๋ฑ์ค๋ ์ฐ๋ฝ์ฒ ๋ชฉ๋ก๊ณผ ๊ฐ์ด ์ฌ์ฉ์์ ์ฐ๋ฝ์ฒ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ์์๋๋ก ์ ์ฅํ๋ ๊ฒ์ด ์๋ ์ํ๋ฒณ ์์ผ๋ก ๋์ดํ์ฌ ์ฌ์ฉ์๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ฐพ์๋ธ๋ค.
์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ์ง ์๊ณ ํ์์ ์งํํ๊ฒ ๋๋ฉด ์ต์ ์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๊ฒ ๋์ด์ O(n)๋งํผ ํ์ํ๊ฒ ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฒ์๋ฅผ ๋งค๋ฒ ์ ๋ฐ์ฉ ์ค์ผ ์ ์๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(log n)๋งํผ ๊ฑธ๋ฆฌ๊ฒ ๋๋ค.
๋ฐ์ดํฐ(entry) ๊ฐ์ | ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ ๊ฒฝ์ฐ์ ํ์ ํ์(์ต์ ์ ๊ฒฝ์ฐ) | ์ ์ฉํ์ง ์์์ ๋ ํ์ ํ์(์ต์ ์ ๊ฒฝ์ฐ |
---|---|---|
8 | 3 | 8 |
100 | 7 | 100 |
1,000 | 10 | 1,000 |
10,000 | 14 | 10,000 |
100,000 | 17 | 100,000 |
1,000,000 | 20 | 1,000,000 |
Clustered index
์ฐธ์กฐ
https://dataschool.com/sql-optimization/how-indexing-works
CREATE INDEX ์ธ๋ฑ์ค ์ด๋ฆ ON ํ
์ด๋ธ ์ด๋ฆ ( ํ
์ด๋ธ์ ์ปฌ๋ผ );
ALTER TABLE ํ
์ด๋ธ ์ด๋ฆ DROP INDEX ์ธ๋ฑ์ค ์ด๋ฆ;
SHOW INDEX FROM ํ
์ด๋ธ ์ด๋ฆ
์ธ๋ฑ์ค๋ฅผ ์ ์ฉ ํ์๋ค๋ฉด ์๋๋ฅผ ๋น๊ตํด๋ณด๊ณ ์ถ์ ๊ฒ์ด๋ค. Mysql์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ํน์ ์ฟผ๋ฆฌ๋ฌธ์๋ํ ์๋๋ฅผ ํ์ธํด ๋ณผ ์ ์๋ค.
EXPLAIN ANALYZE ์ฟผ๋ฆฌ๋ฌธ
@Entity
@Table(indexes = [Index(name = "์ธ๋ฑ์ค ์ด๋ฆ", columnList = "์ปฌ๋ผ ์ด๋ฆ")])
class Member(
์์๊ฐ์ด ์ธ๋ฑ์ค์ ์ด๋ฆ๊ณผ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ ์ปฌ๋ผ์ ์ง์ ํ์ฌ JPA๋ฌธ๋ฒ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๋ค.