user-img
MySQL 9
thumbnail
[DB] ์ธ๋ฑ์Šค ๋จธ์ง€ (Index Merge)
0. ํ•™์Šต ๋ชฉ์ ์ธ๋ฑ์Šค ๋จธ์ง€๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค.์ธ๋ฑ์Šค ๋จธ์ง€์˜ ์ข…๋ฅ˜์ธ ๊ต์ง‘ํ•ฉ, ํ•ฉ์ง‘ํ•ฉ, ์ •๋ ฌ ํ›„ ํ•ฉ์ง‘ํ•ฉ์„ ์ดํ•ดํ•œ๋‹ค.1. ์ธ๋ฑ์Šค ๋จธ์ง€๋ž€?Index Merge ๋ž€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ๋ณ„ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณ‘ํ•ฉํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ตœ์ ํ™” ์ „๋žต์ด๋‹ค.๋งŒ์•ฝ ํ•ด๋‹น ์˜ต์…˜์„ ์ผœ๋‘์ง€ ์•Š์•˜๋‹ค๋ฉด, ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ, ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ๋Š” ์˜ค๋กœ์ง€ ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•œ๋‹ค.2. ์‚ฌ์šฉ๋˜๋Š” ์กฐ๊ฑด์ฟผ๋ฆฌ์— ์‚ฌ์šฉ๋œ ๊ฐ๊ฐ์˜ ์กฐ๊ฑด์ด ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ” ๋‚ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค๋กœ๋งŒ ์ฒ˜๋ฆฌํ–ˆ์„ ๊ฒฝ์šฐ ๋ฒ”์œ„ ํ•„ํ„ฐ๋ง ํšจ๊ณผ๊ฐ€ ๋ฏธ๋ฏธํ•˜๋‹ค.3. ์ข…๋ฅ˜intersection: ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค๋กœ ํ•„ํ„ฐ๋งํ•œ ๋ฐ์ดํ„ฐ๋“ค ์‚ฌ์ด์˜ ๊ต์ง‘ํ•ฉ๋งŒ ๋ฐ˜ํ™˜union: ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค๋กœ ํ•„ํ„ฐ๋งํ•œ ๋ฐ์ดํ„ฐ๋“ค ์‚ฌ์ด์— ํ•ฉ์ง‘..
2025.07.24
Computer Science/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
thumbnail
[DB] ์ธ๋ฑ์Šค ํ™•์žฅ (Index Extension)
0. ํ•™์Šต ๋ชฉ์ ์ธ๋ฑ์Šค ํ™•์žฅ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค.์ธ๋ฑ์Šค ํ™•์žฅ ์ „๋žต์˜ ์žฅ์ ์„ ์ดํ•ดํ•œ๋‹ค.1. ์ธ๋ฑ์Šค ํ™•์žฅ ์ด๋ž€?Index Extension์€ InnoDB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ๋•Œ, ๊ทธ ๋ณด์กฐ ์ธ๋ฑ์Šค์— ์ž๋™ ์ถ”๊ฐ€๋œ PK๋„ ํ•จ๊ป˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ• ์ง€ ๋ง์ง€๋ฅผ ์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค. ํ•ด๋‹น ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด, ๋ณด์กฐ์ธ๋ฑ์Šค๋ฅผ (๋ณด์กฐ ์ธ๋ฑ์Šค, PK) ๋กœ ๋œ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.-- ํ…Œ์ด๋ธ” ์ƒ์„ฑCREATE TABLE dept_emp ( dept_no INT NOT NULL, emp_no CHAR(4) NOT NULL, salary INT, from_date DATE NOT NULL, PRIMARY KEY (dept_no, ..
2025.07.24
Computer Science/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
thumbnail
[DB] ์ธ๋ฑ์Šค ์ปจ๋””์…˜ ํ‘ธ์‹œ๋‹ค์šด(Index Condition PushDown)
0. ํ•™์Šต ๋ชฉ์ ์ธ๋ฑ์Šค ์ปจ๋””์…˜ ํ‘ธ์‹œ๋‹ค์šด์˜ ์ •์˜๋ฅผ ์ดํ•ดํ•œ๋‹ค.์ธ๋ฑ์Šค ์ปจ๋””์…˜ ํ‘ธ์‹œ๋‹ค์šด์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ์™€ ๋น„ํ™œ์„ฑํ™” ๋˜์—ˆ์„ ๋–„, ์‹คํ–‰ ๊ณ„ํš์ด ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.1. ์ธ๋ฑ์Šค ์ปจ๋””์…˜ ํ‘ธ์‹œ ๋‹ค์šด์ด๋ž€?Index Condition Pushdwon(์ดํ•˜ ICP) ๋Š” ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ตœ์ ํ™” ์ „๋žต์ด๋‹ค.๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋˜๋Š” ์ตœ์ ํ™”๋ฅผ ICP๋ผ๊ณ  ํ•œ๋‹ค.์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ '๋ฒ”์œ„๋ฅผ ์ค„์ผ ์ˆ˜ ์—†๋Š” ์กฐ๊ฑด ์ปฌ๋Ÿผ์ด๋”๋ผ๋„' ๋ณด์กฐ ์ธ๋ฑ์Šค์˜ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์กด์žฌํ•˜๋Š” ์ปฌ๋Ÿผ์ด๋ฉด, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—๊ฒŒ ์ „๋ถ€ ์ „๋‹ฌํ•ด์ค€๋‹ค.์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ, ์˜ตํ‹ฐ๋งˆ์ด์ €์—๊ฒŒ ๋ฐ›์€ ์กฐ๊ฑด ์ปฌ๋Ÿผ๋“ค๋กœ ์ตœ๋Œ€ํ•œ ์œ ํšจํ•˜์ง€ ์•Š์€ ํŠœํ”Œ๋“ค์„ ๊ฑธ๋Ÿฌ๋‚ธ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ๋ณธ ํ…Œ์ด๋ธ”์„ ์ฝ๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค. [!info] MyS..
2025.07.24
Develop/BACK-END
thumbnail
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1 ์กฐ๊ฑด์— ๋งž๋Š” ๋„์„œ ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅํ•˜๊ธฐ
1. ๋ฌธ์ œ ์„ค๋ช… ๐Ÿ“Œ(1) ๋งํฌ๐Ÿ”—๋ฌธ์ œ ๋งํฌ(2) ํ•ด์„ค๐Ÿ•ตKEY WORD: DATE ํ•จ์ˆ˜, = ๋™๋“ฑ ๋น„๊ต์›๋ž˜ DATE()ํ•จ์ˆ˜ ์•ˆ์— DATE TIME์„ ๋„ฃ์œผ๋ฉด DATE๋กœ ๋ณ€ํ™˜ ๋˜์–ด์ง€๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” ๊ทธ๊ฒŒ ์•ˆ ํ†ตํ•ด์„œ ๋ญ”๊ฐ€ ์ฐœ์ฐœํ•˜๋‹ค. ๊ทธ๋ž˜์„œ DBEAVER์—์„œ ๋Œ๋ ค๋ณด๋‹ˆ, ๋˜ ๋œ๋‹ค.์ผ๋‹จ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ๋Š” ์ € DATE ํ•จ์ˆ˜๊ฐ€ ๋จนํžˆ์ง€ ์•Š์•„์„œ, DATE_FORMAT(A, '์™€์ผ๋“œ ์นด๋“œ ๋ฌธ์žฅ') ํ˜•ํƒœ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.2. ๊ตฌํ˜„ ์ฝ”๋“œ๐Ÿ”ŽSELECTBOOK_ID,DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOKWHERE YEAR(PUBLISHED_DATE) = '2021'AND CATEGORY = '์ธ๋ฌธ';3. DRILING ๐ŸŽฏ์—†์Œ ์ด๋ชจ..
2025.04.18
CodingTest/SQL-๋ฌธ์ œ ํ’€์ด
thumbnail
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1 ํ‰์ผ ์ผ์ผ ๋Œ€์—ฌ ์š”๊ธˆ ๊ตฌํ•˜๊ธฐ
1. ๋ฌธ์ œ ์„ค๋ช… ๐Ÿ“Œ(1) ๋งํฌ๐Ÿ”—๋ฌธ์ œ ๋งํฌ(2) ํ•ด์„ค๐Ÿ•ตKEY WORD: ROUND(A, num)ROUND(A,num)์ผ ๋•Œ, num์€ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์‚ด์•„์žˆ๋Š” ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜์ด๋‹ค. ROUND(A,1)์ด๋ผ๋ฉด, 2.x, 3.x ๋“ฑ 1์˜ ์ž๋ฆฌ๊นŒ์ง€ ์‚ด์•„ ๋‚จ๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. SQL ์ฟผ๋ฆฌ๋ฌธ์—์„œ๋Š” =์ด JAVA์™€ ๋‹ฌ๋ฆฌ ๋‚ด์šฉ ๋น„๊ต์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•  ๋•Œ๋„ ์จ๋„ ๋œ๋‹ค.3. ๊ตฌํ˜„ ์ฝ”๋“œ๐Ÿ”ŽSELECTROUND(AVG(DAILY_FEE), 0) AS 'AVERAGE_FEE'FROM CAR_RENTAL_COMPANY_CARWHERE CAR_TYPE = 'SUV'4. DRILING ๐ŸŽฏ(1) = ๋‚ด์šฉ ๋น„๊ต์— ๋Œ€ํ•ดJAVA์™€ ๋‹ฌ๋ฆฌ MySQL์€ A = B์ผ ์‹œ, ๊ฐ’ ๊ธฐ๋ฐ˜ ๋น„๊ต๊ฐ€ ์ˆ˜ํ–‰๋จMySQL์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ™œ์šฉํ•œ ๊ฐ์ฒด ๊ฐœ๋…..
2025.04.18
CodingTest/SQL-๋ฌธ์ œ ํ’€์ด
thumbnail
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1 ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก์—์„œ ์žฅ๊ธฐ / ๋‹จ๊ธฐ ๋Œ€์—ฌ ๊ตฌ๋ถ„ํ•˜๊ธฐ
1. ๋ฌธ์ œ ์„ค๋ช… ๐Ÿ“Œ(1) ๋งํฌ๐Ÿ”—๋ฌธ์ œ ๋งํฌ(2) ํ•ด์„ค๐Ÿ•ตKEY WORD: DATEDIFF(), CASE WHEN THEN END ๋ฌธDATEDIFF(๋ ์‹œ๊ฐ„, ์‹œ์ž‘ ์‹œ๊ฐ„)์€ ๋ ์‹œ๊ฐ„์—์„œ ์‹œ์ž‘์‹œ๊ฐ„์„ ๋นผ์„œ, ๋‘˜์˜ ๋‚ ์งœ ์ฐจ์ด๋ฅผ INTEGER๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ CASE-WHEN-THEN...END ๋ฌธ์„ ํ™œ์šฉํ•ด 30์ผ ์ด์ƒ์€ ์žฅ๊ธฐ ๋Œ€์—ฌ ์•„๋‹ˆ๋ฉด ๋‹จ๊ธฐ ๋Œ€์—ฌ๋กœ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค.์ด๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ๋‹น์ผ ๋Œ€์—ฌ, ๋‹น์ผ ๋ฐ˜๋‚ฉํ•ด๋„ ํ•˜๋ฃจ๋กœ ์นœ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๊ฒƒ์„ ํ† ๋Œ€๋กœ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด, ์‹ค์งˆ์ ์œผ๋กœ ๋‚ ์งœ๋Š” 29์ผ ์ง€๋‚œ ์‹œ์ ์ด +1 ๋”ํ•ด์„œ 30์ผ ๋™์•ˆ ๋Œ€์—ฌ๋ฅผ ํ•œ ์‹œ์ ์ด ๋œ๋‹ค.2. ๊ตฌํ˜„ ์ฝ”๋“œ๐Ÿ”ŽSELECTHISTORY_ID,CAR_ID,DATE(START_DATE),DATE_FORMAT(END..
2025.04.18
CodingTest/SQL-๋ฌธ์ œ ํ’€์ด
thumbnail
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv 1 ์žก์€ ๋ฌผ๊ณ ๊ธฐ์˜ ํ‰๊ท  ๊ธธ์ด ๊ตฌํ•˜๊ธฐ
1. ๋ฌธ์ œ ์„ค๋ช… ๐Ÿ“Œ(1) ๋งํฌ๐Ÿ”—๋ฌธ์ œ ๋งํฌ(2) ํ•ด์„ค๐Ÿ•ตKEY WORD: CASE-WHEN ๋ถ„๊ธฐ๋ฌธ, AVG ์ง‘๊ณ„ํ•จ์ˆ˜, ROUND() ์›ํ•˜๋Š” ์ง€์ ์—์„œ ์†Œ์ˆ˜์  ๋ฐ˜์˜ฌ๋ฆผNULL ์ธ ๋…€์„๋“ค์— ๋Œ€ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. -> AVG๋Š” null ๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ํ‰๊ท  ๋‚ด๊ธฐ ๋•Œ๋ฌธ์—, Null์„ ์ „๋ถ€ 10์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์ง€ ์•Š์œผ๋ฉด, ๊ณ„์‚ฐ์ด ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š๋Š”๋‹ค.AVG()๋Š” DEFAULT๋กœ ์ž๋ฆฟ์ˆ˜๋ฅผ 6๊ฐœ ๊นŒ์ง€ ๊ฐ€์ ธ์˜จ๋‹ค. ์—ฌ๊ธฐ์„œ ROUND๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” ๊ณณ์—์„œ ์†Œ์ˆ˜์  ๋ฐ˜์˜ฌ๋ฆผ์„ ํ•ด์•ผํ•œ๋‹ค.2. ๊ตฌํ˜„ ์ฝ”๋“œ ๐Ÿ”ŽSELECT ROUND( AVG( CASE WHEN f.LENGTH IS NULL THEN 10 ELSE f.LENGTH END),2 ) AS AVERAGE_LENGTHFROM FISH..
2025.04.15
CodingTest/SQL-๋ฌธ์ œ ํ’€์ด
thumbnail
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1 ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ค‘ ๊ฐ€์žฅ ํฐ ๋ฌผ๊ณ ๊ธฐ์˜ ๊ธธ์ด ๊ตฌํ•˜๊ธฐ
1. ๋ฌธ์ œ ์„ค๋ช… ๐Ÿ“Œ(1) ๋งํฌ๐Ÿ”—๋ฌธ์ œ ๋งํฌ(2) ํ•ด์„ค๐Ÿ•ตKEY WORD: ๋ฌธ์ž์—ด ํ•ฉ์น˜๊ธฐ, ์ง‘๊ณ„ ํ•จ์ˆ˜cm๋ฅผ ๊ธธ์ด์— ํ•ฉ์น˜๊ธฐ ์œ„ํ•ด CONCAT() ํ•จ์ˆ˜ ํ™œ์šฉmax() ์ง‘๊ณ„ ํ•จ์ˆ˜ ํ™œ์šฉ2. ๊ตฌํ˜„ ์ฝ”๋“œ ๐Ÿ”ŽSELECT CONCAT(max(f.LENGTH), 'cm') as MAX_LENGTHFROM FISH_INFO f3. DRILING ๐ŸŽฏ(1) MAX() ์ง‘๊ณ„ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€ ์ž‘๋™ ์›๋ฆฌ// ์ดˆ๊ธฐํ™”int maxValue = NULL;for (int i = 0; i maxValue) { maxValue = currentRowValue; }}return maxValue;์ด๋ ‡๊ฒŒ ํ–‰ ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•˜๋ฉฐ MAX ๊ฐ’์„ ์ฐพ๋Š” ๊ตฌ์กฐ๋ฅผ ** **1-pass linear scan์ด๋ผ ๋ถ€๋ฅธ๋‹ค.(2) CONCAT(A,B,..
2025.04.15
CodingTest/SQL-๋ฌธ์ œ ํ’€์ด
thumbnail
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv1 ํ•œํ•ด์— ์žก์€ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ๊ตฌํ•˜๊ธฐ
1. ๋ฌธ์ œ ์„ค๋ช… ๐Ÿ“Œ(1) ๋งํฌ๐Ÿ”—๋ฌธ์ œ ๋งํฌ(2) ํ•ด์„ค๐Ÿ•ตKEY WORD: ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ, ์ง‘๊ณ„ ํ•จ์ˆ˜ํ•ด๋‹น ๋ฌธ์ œ๋Š” "'YYYY/MM/DD' ํ˜•์‹์˜ TIME์—์„œ ์•ž 4์ž๋ฆฌ์˜ ์—ฐ๋„๋ฅผ ์งœ๋ฅผ ์ˆ˜ ์žˆ๋Š”๊ฐ€?"๋ฅผ ๋ฌป๋Š” ๋ฌธ์ œ์ด๋‹ค.2. ๊ตฌํ˜„ ์ฝ”๋“œ ๐Ÿ”ŽA. DATE ๋ฌธ ์ „์šฉ ํ•จ์ˆ˜ ์‚ฌ์šฉSELECT COUNT(*) AS FISH_COUNTFROM FISH_INFOWHERE YEAR(time) = 2021;B. DATE TYPE์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋„ ์“ธ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ ํ™œ์šฉsubstr() ํ™œ์šฉselect count(*) as FISH_COUNT from FISH_INFOwhere substr(time, 1, 4) = '2021';Like ํ™œ์šฉselect count(*) as FISH_COUNT from FISH_INFOwhere TIME..
2025.04.15
CodingTest/SQL-๋ฌธ์ œ ํ’€์ด