SQL - SQLite Index

2026. 3. 23. 10:11ยท๐Ÿงฉ SQL

SQLite

 

 

โœ… Index ๊ตฌ์กฐ(B+ Tree)


B+Tree
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋“ฑ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋กœ ํ‚ค์— ์˜ํ•ด์„œ ๊ฐ๊ฐ ์‹๋ณ„๋˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ํšจ์œจ์ ์ธ ์‚ฝ์ž…, ๊ฒ€์ƒ‰๊ณผ ์‚ญ์ œ๋ฅผ ํ†ตํ•ด ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ผ์ข…์ž…๋‹ˆ๋‹ค.

 

SQLite์™€ MySQL ์ž์ฒด๋„ B+ Tree๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ
๋ฐ์ดํ„ฐ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ(leaf)์—๋งŒ ์ €์žฅํ•˜๊ณ , ๋‚ด๋ถ€ ๋…ธ๋“œ๋Š” ํƒ์ƒ‰๋งŒ ๋‹ด๋‹นํ•˜๋Š” ๊ตฌ์กฐ

 

 

index๋Š” inserting, deleting, editing์„ ๋ชจ๋‘ ๋А๋ฆฌ๊ฒŒ ๋งŒ๋“ ๋‹ค. (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋™๊ธฐํ™”๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

๋ณ€๊ฒฝ์ด ์žฆ์€ ์—ด์ด ์žˆ๋‹ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

rowid

SQLite๋Š” ๊ธฐ๋ณธ ์ œ๊ณต, Primary key๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ƒ์„ฑํ–ˆ์„ ์‹œ, ๊ทธ primary key๋ฅผ rowid๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
MySQL์€ Primary key๊ฐ€ ์—†๊ณ , table์— unique column์ด ์—†์„ ์‹œ์— ์ƒ์„ฑํ•œ๋‹ค.

 

unique

uniqueํ•œ column์„ ์ƒ์„ฑํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ•ด๋‹น column์— index๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

 

โœ… Multi Column Index


Multi-Column Indexes ๋˜๋Š” ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ์กฐํ•ฉํ•˜์—ฌ ๋งŒ๋“  ์ธ๋ฑ์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ๋งŒ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” Single-Column Index์™€ ๋‹ฌ๋ฆฌ, Multi-Column Index๋Š” ์ฟผ๋ฆฌ ์กฐ๊ฑด์— ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์ด ํ•จ๊ป˜ ์‚ฌ์šฉ๋  ๋•Œ ์„ฑ๋Šฅ์„ ๋”์šฑ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Multi-Column Index์˜ ํŠน์ง•
1. ์„ ๋‘ ์ปฌ๋Ÿผ ์šฐ์„  ๊ทœ์น™: Multi-Column Index๋Š” ์ •์˜๋œ ์ปฌ๋Ÿผ์˜ ์ˆœ์„œ๋Œ€๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, INDEX(col1, col2, col3)๋ผ๋Š” Multi-Column Index๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์ด ์ธ๋ฑ์Šค๋Š” col1์„ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, col1๊ณผ col2, ๋˜๋Š” col1, col2, col3์„ ๋ชจ๋‘ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ์œ ํšจํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ col2, col3๋งŒ์„ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2. ์ฟผ๋ฆฌ ์ตœ์ ํ™”: Multi-Column Index๋Š” ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์ด ์กฐํ•ฉ๋œ ์กฐ๊ฑด์œผ๋กœ ์ž์ฃผ ๊ฒ€์ƒ‰๋˜๋Š” ๊ฒฝ์šฐ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, WHERE col1 = 'A' AND col2 = 'B'์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๊ฐ€ ๋งŽ๋‹ค๋ฉด (col1, col2)๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ด๋‹น ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

EXPLAIN QUERY PLAN
SELECT
	title
FROM
	movies
WHERE
	revenue > 100
	AND rating = 8
	AND release_date > 2020;

CREATE INDEX idx ON movies (rating, release_date, revenue);

DROP INDEX idx;

= ์™€ ๊ฐ™์€ ์กฐ๊ฑด์ด ์•„๋‹ˆ๋ผ ๋ฒ”์œ„ ์กฐ๊ฑด์ด ์‚ฌ์šฉ๋˜๋ฉด ๋‹ค์Œ index๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ค‘์š”ํ•œ index๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

AND๋กœ ์ „๋ถ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ์ค‘๊ฐ„์— OR๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค์ค‘ index๊ฐ€ ๊นจ์ง„๋‹ค.
์ด๋Ÿฐ ๊ฒฝ์šฐ ํ•ด๊ฒฐ๋ฒ•์€ 2๊ฐ€์ง€๋‹ค.

 

1. ๋‹ค์ค‘ index๊ฐ€ ์•„๋‹Œ ๊ฐ๊ฐ index๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค.

CREATE INDEX idx_rating ON movies(rating);
CREATE INDEX idx_release ON movies(release_date);

 

2. ๋‹ค์ค‘ index๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ UNION์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ์ค€๋‹ค.

SELECT * FROM movies WHERE rating = 8
UNION
SELECT * FROM movies WHERE release_date > 2020;

 

 

 

 

โœ… Covering Index


Multi Column Index์ฒ˜๋Ÿผ ๋“œ๋ผ๋งˆํ‹ฑํ•˜์ง„ ์•Š์ง€๋งŒ ํ›Œ๋ฅญํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

Multi Column Index์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ๊ณ .

 

Covering Index๋ž€?

query์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์™„๋ฒฝํ•˜๊ฒŒ ๋งŒ์กฑ์‹œํ‚ค๋Š” Index

 

EXPLAIN QUERY PLAN
SELECT
	title
FROM
	movies
WHERE
	rating > 7;

CREATE INDEX idx ON movies (rating, title);

DROP INDEX idx;

์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— query์—์„œ ์‚ฌ์šฉํ•˜๋Š” title๊ณผ rating ๋ชจ๋‘ index์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— index์—์„œ main table๋กœ ์ ํ”„ํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ

๊ณผ๋„ํ•œ ์‚ฌ์šฉ์€ ์—…๋ฐ์ดํŠธ๋‚˜ ์‚ญ์ œ์˜ ์„ฑ๋Šฅ์„ ๋–จ์–ดํŠธ๋ฆผ

(index ๋˜ํ•œ ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

 

 

โœ… Index ์‚ฌ์šฉ ์‹œ๊ธฐ


1. where, order by, join ์—ฐ์‚ฐ ์‹œ  ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” column์ด ์žˆ์„ ๋•Œ

2. ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์„ ๋•Œ

3. table์ด ํด ๋•Œ

4. Foreign keys๊ฐ€ ์žˆ์„ ๋•Œ

5. ์ผ๋‹จ index ์—†์ด ๋ชจ๋“  ์ž‘์—…์„ ๋๋‚ด๊ณ ๋‚˜์„œ, ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๋А๊ปด์กŒ์„ ๋•Œ

6. ๋‹ค์ค‘์—ด์„ ํ•จ๊ป˜ ํ•„ํ„ฐ๋ง, ์ •๋ ฌํ•˜๋Š” query์—๋Š” Multi Column Index๋ฅผ ์‚ฌ์šฉ

7. ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” column์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค

8. ์˜ํ™” ์ค„๊ฑฐ๋ฆฌ ๊ฐ™์€ ๊ธด ๊ธ€์˜ column์ด ์žˆ๋‹ค๋ฉด ๊ธฐ๋ณธ๊ฐ’์ธ B+ Tree๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋ง๊ณ  full-text index๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

(SQLite๋Š” ์ง€์› ์•ˆ ํ•จ)

'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL - MySQL, ๋ฌธ๋ฒ•  (0) 2026.03.24
SQL - MySQL Data Types  (0) 2026.03.23
SQL - MySQL Setup  (0) 2026.03.23
SQL - SQLite, ๋ฌธ๋ฒ•  (0) 2026.03.17
SQL - SQL์ด๋ž€?  (0) 2026.03.17
'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • SQL - MySQL Data Types
  • SQL - MySQL Setup
  • SQL - SQLite, ๋ฌธ๋ฒ•
  • SQL - SQL์ด๋ž€?
j2yonghwa
j2yonghwa
Trying to be a fullstack developer ๐Ÿš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (156)
      • โฐ Daily WakaTime (1)
      • ๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋” (2)
      • ๐Ÿบ Dev Setup (3)
      • ๐Ÿ”ญ Tech Info (1)
      • ๐Ÿšซ Error (1)
      • ๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (23)
      • ♣๏ธ Next.js 14 (10)
      • ♠๏ธ Next.js 12 (20)
      • ๐Ÿ›ธ React Native (12)
      • ๐Ÿฆ‹ TypeScript (1)
      • ๐Ÿ Python (2)
      • ๐ŸŒŠ TailwindCSS (4)
      • ๐Ÿงฉ SQL (25)
      • ๐Ÿ’Ž Prisma (5)
      • ๐ŸŒฑ MongoDB (4)
      • ๐ŸŽฏ Redis (1)
      • ๐Ÿงฌ GraphQL (2)
      • ๐Ÿ”ฅ Firebase (7)
      • ๐Ÿ’ธ Third-Party Services (2)
      • ๐Ÿ•ธ๏ธ Web (1)
      • ๐Ÿ† ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (23)
      • ๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค (5)
      • ๐Ÿ“— ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ -JS- (0)
      • ๐Ÿ“˜ ํด๋ฆฐ์ฝ”๋“œ (0)
      • ๐Ÿฏ ๊ฟ€ํŒ ๐Ÿ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • ๊นƒํ—™
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    tailwindcss
    next.js 14
    react router
    dev setup
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    0๋ ˆ๋ฒจ
    SQL
    ๋ชจ๋”ฅ๋‹ค
    next.js 12
    Python
    API
    Next.js
    Prisma
    MySQL
    PostgreSQL
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
    React Native
    Firebase
    mongoDB
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
j2yonghwa
SQL - SQLite Index
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”