๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
BackEnd๐ŸŒฑ/DB & SQL

์ธ๋ฑ์Šค๋ฅผ ์•ˆํƒ€๋Š” ์ฟผ๋ฆฌ๋“ค

by ์•ˆ์ฃผํ˜• 2023. 3. 23.

์ธ๋ฑ์Šค๋ž€?

์ธ๋ฑ์Šค(Index)๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ƒ‰์ธ์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ์ฃผ๋กœ WHERE ์กฐ๊ฑด์ ˆ์— ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋Š” B-ํŠธ๋ฆฌ(B-tree)๋‚˜ ํ•ด์‹œ ํ…Œ์ด๋ธ”(hash table)๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ DBMS์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์  ๋•Œ๋ฌธ์— B-ํŠธ๋ฆฌ๋ฅผ ์ธ๋ฑ์Šค ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ํŠน์ • ๊ฐ’๋ณด๋‹ค ํฌ๊ณ  ์ž‘์€ ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.
  • ์ฐธ์กฐ ํฌ์ธํ„ฐ๊ฐ€ ์ ์–ด ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์–‘์—๋„ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฐ์ดํ„ฐ ํƒ์ƒ‰๋ฟ ์•„๋‹ˆ๋ผ, ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ์—๋„ ํ•ญ์ƒ O(logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

๋ณดํ†ต INDEX๋ฅผ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ์— ํ•œ ๊ฐœ ์ด์ƒ์„ ์ฃผ๋ฉด Index Table์ด ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ์ด Index Table์—๋Š” ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์˜ ๋กœ์šฐ๊ฐ’๊ณผ rowid ๊ฐ’์ด ์ €์žฅ๋˜๊ฒŒ ๋˜๋ฉฐ ๋กœ์šฐ์˜ ๊ฐ’์€ ์ •๋ ฌ๋œ B-TREE ๊ตฌ์กฐ๋กœ ์ €์žฅ์‹œ์ผœ ๋‘์–ด ๋” ๋น ๋ฅด๊ฒŒ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ UPDATE, INSERT, DELETE์‹œ์— ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋Š”๋ฐ, ์ด ์„ธ ๊ฐ€์ง€๋Š” ์›๋ณธํ…Œ์ด๋ธ”์€ ๋ฌผ๋ก  INDEX TABLE์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ์‹œ์ผœ ์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
 

์ธ๋ฑ์Šค๋ฅผ ํƒ€์ง€ ์•Š๋Š” ๋Œ€ํ‘œ์ ์ธ ์ฟผ๋ฆฌ๋“ค

  1. ํ•จ์ˆ˜๋‚˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
  2. LIKE๋ฌธ ๊ฒ€์ƒ‰์—์„œ ์™€์ผ๋“œ์นด๋“œ์˜ ์œ„์น˜
  3. OR์ ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
  4. NULL ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๊ฒฝ์šฐ
  5. ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ
  6. ์ปฌ๋Ÿผ์˜ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒ€์ƒ‰์„ ํ•˜๋Š” ๊ฒฝ์šฐ
  7. IN ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰์—์„œ IN ๋ชฉ๋ก์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ

 

1. ํ•จ์ˆ˜๋‚˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

SELECT * FROM table_name WHERE UPPER(name) = 'AHN';         -- ์ธ๋ฑ์Šค ํ™œ์šฉX

SELECT * FROM table_name WHERE YEAR(date_column) = 2023;    -- ์ธ๋ฑ์Šค ํ™œ์šฉX

SELECT * FROM table_name WHERE column_name + 1 = 100;       -- ์ธ๋ฑ์Šค ํ™œ์šฉX

๋Œ€ํ‘œ์ ์œผ๋กœ ์œ„์™€ ๊ฐ™์€ ์˜ˆ์‹œ๋“ค์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ์—ด์— ํ•จ์ˆ˜ ๋˜๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ธ๋ฑ์Šค์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ํ•จ์ˆ˜๋‚˜ ์—ฐ์‚ฐ์ž์˜ ๋™์ž‘ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋Š” ํ‚ค์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜๋ฉฐ, ๊ฒ€์ƒ‰ ์‹œ์—๋Š” B-ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•จ์ˆ˜๋‚˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒ€์ƒ‰ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ, ์ธ๋ฑ์Šค์˜ ์ˆœ์„œ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•˜๊ธฐ์— ์ฟผ๋ฆฌ์˜ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
 

2. LIKE๋ฌธ ๊ฒ€์ƒ‰์—์„œ ์™€์ผ๋“œ์นด๋“œ์˜ ์œ„์น˜ 

SELECT * FROM table_name WHERE name LIKE 'A%';  -- ์ธ๋ฑ์Šค ํ™œ์šฉO

SELECT * FROM table_name WHERE name LIKE '%A';  -- ์ธ๋ฑ์Šค ํ™œ์šฉX

SELECT * FROM table_name WHERE name LIKE '%A%'; -- ์ธ๋ฑ์Šค ํ™œ์šฉX

์œ„์™€ ๊ฐ™์ด LIKE ์ ˆ์—์„œ %๊ฐ€ ๋’ค์— ์žˆ๋Š” ๊ฒฝ์šฐ, ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, %๊ฐ€ ์•ž์ด๋‚˜ ์ค‘๊ฐ„์— ์žˆ์„ ๊ฒฝ์šฐ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด์œ ๋Š” ์ธ๋ฑ์Šค์˜ B-ํŠธ๋ฆฌ ๊ตฌ์กฐ์™€ LIKE ์ ˆ์˜ ๊ฒ€์ƒ‰ ํŒจํ„ด์ด ์ผ์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์ „์— ๊ฐ„๋‹จํžˆ ๋งํ–ˆ์ง€๋งŒ ์ธ๋ฑ์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ B-ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌ๋œ ํ‚ค๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ %๊ฐ€ ๋’ค์— ์žˆ์„ ๊ฒฝ์šฐ๋Š” ๋ฌธ์ž์—ด ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ๊ทธ๋Œ€๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ธ๋ฑ์Šค๋ฅผ ํƒ€์ง€๋งŒ, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋Š” ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•ด ์ธ๋ฑ์Šค๋ฅผ ํƒ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
 

3. OR ์ ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

SELECT * FROM table_name WHERE name = 'Ahn' OR age = 26;  -- ์ธ๋ฑ์Šค ํ™œ์šฉX

OR์ ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋Š”๋ฐ, ์ด๋Š” OR์ ˆ์ด ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ•„๋“œ๋ฅผ ๋™์‹œ์— ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์œ„ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด๋ฆ„์ด 'Ahn'์ด๊ฑฐ๋‚˜ ๋‚˜์ด๊ฐ€ 26์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•ฉ๋‹ˆ๋‹ค.

๋” ์ž์„ธํžˆ๋Š” OR ์ ˆ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ด๋ฉด ์ „์ฒด ์กฐ๊ฑด์„ ์ฐธ์œผ๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ง์€ OR ์ ˆ์ด ์‚ฌ์šฉ๋œ ์ฟผ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กฐ๊ฑด์˜ ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํ•ฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ตœ์ ์˜ OR ์กฐ๊ฑด์„ ๋ฝ‘๊ธฐ ํž˜๋“ค์–ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 

๋”ฐ๋ผ์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ๋Š” OR ์ ˆ ๋Œ€์‹ ์— UNION ALL ๋“ฑ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์กฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
 

4. NULL ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

SELECT * FROM table_name WHERE name = NULL;     -- ์ธ๋ฑ์Šค ํ™œ์šฉX

SELECT * FROM table_name WHERE age IS NULL;     -- ์ธ๋ฑ์Šค ํ™œ์šฉX

SELECT * FROM table_name WHERE age > 0;         -- ์ธ๋ฑ์Šค ํ™œ์šฉO

NULL ๊ฐ’์„ ๋น„๊ตํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” NULL ๊ฐ’์€ ์ธ๋ฑ์Šค์— ์ €์žฅ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
 

5. ํ…Œ์ด๋ธ” ์ „์ฒด ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ

SELECT * FROM table_name;

๋‹น์—ฐํ•˜๊ฒŒ๋„ ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
 

6. ์ปฌ๋Ÿผ์˜ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒ€์ƒ‰

SELECT *
FROM table1
JOIN table2 ON table1.id = table2.age;

์œ„์™€ ๊ฐ™์ด ์ปฌ๋Ÿผ์˜ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒƒ๋“ค์„ ๋น„๊ตํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋ฉด, ์ธ๋ฑ์Šค์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๊ฐ’๋“ค์— ๋Œ€ํ•ด ์ž๋™์œผ๋กœ ์ž๋ฃŒํ˜• ๋ณ€ํ™˜์ด ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ž๋ฃŒํ˜• ๋ณ€ํ™˜์ด ์ธ๋ฑ์Šค์˜ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๋Š” ์ด์œ ๋Š” ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๋‘ ์ปฌ๋Ÿผ์„ ๋น„๊ตํ•˜๋ ค๋ฉด ๋‘ ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ ์ „์— ์ž๋ฃŒํ˜• ๋ณ€ํ™˜์ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ, ์ธ๋ฑ์Šค์˜ ์ •๋ ฌ ์ˆœ์„œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์–ด ์ธ๋ฑ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
 

7. IN ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰์—์„œ IN ๋ชฉ๋ก์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ

SELECT *
FROM table_name
WHERE id IN (1, 2, 3, ..., 1000);

IN ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰์—์„œ IN ๋ชฉ๋ก์˜ ๊ฐœ์ˆ˜๊ฐ€ ์œ„์™€ ๊ฐ™์ด ๋งŽ์„ ๊ฒฝ์šฐ, ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ˆ˜ํ–‰ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ด๋Š” N๊ฐœ์˜ ์ธ๋ฑ์Šค ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด Full Scan์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋น„์šฉ์ด ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” IN ์—ฐ์‚ฐ์ž ๋Œ€์‹  ์•„๋ž˜์™€ ๊ฐ™์ด JOIN์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT *
FROM table_name
JOIN (
  SELECT 1 AS id UNION ALL
  SELECT 2 AS id UNION ALL
  SELECT 3 AS id UNION ALL
  ...
  SELECT 1000 AS id
) AS ids ON table_name.id = ids.id;

์œ„์˜ ์ฟผ๋ฆฌ๋Š” IN ๋ชฉ๋ก ๋Œ€์‹  UNION ALL์„ ์‚ฌ์šฉํ•˜์—ฌ 1000๊ฐœ์˜ ๊ฐ’์„ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์กฐ์ธ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€