SQL 6

[DB] SQL ์„ฑ๋Šฅ ์ตœ์ ํ™” (feat. SQL Optimization)

๐Ÿ“ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์กฐ์ธ ์ „๋žต 1. ์กฐ์ธ ์ˆœ์„œ ์ตœ์ ํ™” ์ž‘์€ ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์กฐ์ธํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์–‘์„ ์ค„์—ฌ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ ๋ฐฉ์ง€์กฐ์ธ ์กฐ๊ฑด์ด ๋ช…ํ™•ํ•˜๋„๋ก ์ธ๋ฑ์Šค ์ ์šฉ (customer_id ๊ฐ™์€ PK, FK ํ™œ์šฉ) * MariaDB์—์„œ๋Š” `STRAIGHT_JOIN`์„ ํ†ตํ•ด ์ง€์ •ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์กฐ์ธ ์ง€์ • ๊ฐ€๋Šฅ์กฐ์ธ ํžŒํŠธ ์‚ฌ์šฉ : SQL ์‹คํ–‰ ์‹œ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์„ ํƒํ•˜๋Š” ์กฐ์ธ ๋ฐฉ์‹๊ณผ ์ˆœ์„œ๋ฅผ ๊ฐ•์ œ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ - Nested Loop Join : ์ž‘์€ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ ํฐ ํ…Œ์ด๋ธ”์— ๋ฐ˜๋ณต ์ ‘๊ทผ (๋ฃจํ”„ ๋ฐฉ์‹) - Sort Merge Join : ์–‘์ชฝ ํ…Œ์ด๋ธ”์„ ์ •๋ ฌํ•ด์„œ ๋ณ‘ํ•ฉ - Hash Join : ํ•œ์ชฝ ํ…Œ์ด๋ธ” ํ•ด์‹œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ํ›„ ๋‹ค๋ฅธ ์ชฝ๊ณผ ์กฐ์ธ* SELECT ๋ฐ”๋กœ ๋’ค์— ์‚ฌ์šฉ 2. ์ธ๋ฑ์Šค ํ™œ์šฉ ON ์ ˆ์— ์‚ฌ์šฉ๋˜๋Š” ์ปฌ..

IT/SQL 2025.04.09

[MySQL] ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ & ๋ชจ์Œ

โœ”๏ธ ์ฃผ์˜ - SELECT ์ ˆ์—์„œ ์ƒ์„ฑํ•œ ๋ณ„์นญ์„ Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ- Partition๊ณผ ๊ฐ™์€ ์œˆ๋„์šฐ ํ•จ์ˆ˜๋Š” Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ - ์„œ๋ธŒ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ณ , ๋ณ„์นญ ์•ˆ ์‚ฌ์šฉํ•ด๋„ ๋งŒ๋“ค์–ด์•ผ ํ•จ โญ๏ธ SQL ์ฟผ๋ฆฌ ์ˆœ์„œ1. SELECT2. FROM3. JOIN4. WHERE5. GROUP BY6. HAVING7. ORDER BY8. LIMIT ๐Ÿ“ NULL ์ฒ˜๋ฆฌ ๊ด€๋ จ ํ•จ์ˆ˜ NULL ์ฒ˜๋ฆฌ : ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด NULL์ธ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ์—์„œ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ™œ์šฉ NULL ๊ฐ’ ํ™•์ธ`IS NULL` : ๊ฐ’์ด NULL์ธ์ง€ ํ™•์ธ `IS NOT NULL` : ๊ฐ’์ด NULL์ด ์•„๋‹Œ์ง€ ํ™•์ธ `ISNULL(expr)` : NULL์ด๋ฉด 1 ๋ฐ˜ํ™˜, ์•„๋‹ˆ๋ฉด 0์„ ๋ฐ˜ํ™˜..

IT/SQL 2025.03.23

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] MySQL Lv.4 ๋ฌธ์ œํ’€์ด ์ •๋‹ต ๋ชจ์Œ (feat. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ)

๐Ÿš€ MySQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ ๋ฐ”๋กœ๊ฐ€๊ธฐ [MySQL] ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ & ๋ชจ์Œโœ”๏ธ ์ฃผ์˜ - SELECT ์ ˆ์—์„œ ์ƒ์„ฑํ•œ ๋ณ„์นญ์„ Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ- Partition๊ณผ ๊ฐ™์€ ์œˆ๋„์šฐ ํ•จ์ˆ˜๋Š” Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ - ์„œ๋ธŒ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ณ , ๋ณ„์นญ ์•ˆ ์‚ฌ์šฉํ•ด๋„ ๋งŒ๋“ค์–ด์•ผ ํ•จ   ๐Ÿ“ NULL ์ฒ˜thswldud.tistory.com  ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฌธ์ œ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค  ๋ฌธ์ œ ํ’€์ด ๊ธฐ๊ฐ„ : 24๋…„ 12์›” 27์ผ ~ ๋ณดํ˜ธ์†Œ์—์„œ ์ค‘์„ฑํ™”ํ•œ ๋™๋ฌผSELECT I.ANIMAL_ID , I.ANIMAL_TYPE , I.NAMEFROM ANIMAL_INS AS I JOIN ANIMAL_OUTS AS O ON I.ANIMAL_ID = O.ANIMAL_IDWHERE SEX_UPON..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] MySQL Lv.3 ๋ฌธ์ œํ’€์ด ์ •๋‹ต ๋ชจ์Œ (feat. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ)

๐Ÿš€ MySQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ ๋ฐ”๋กœ๊ฐ€๊ธฐ [MySQL] ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ & ๋ชจ์Œโœ”๏ธ ์ฃผ์˜ - SELECT ์ ˆ์—์„œ ์ƒ์„ฑํ•œ ๋ณ„์นญ์„ Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ- Partition๊ณผ ๊ฐ™์€ ์œˆ๋„์šฐ ํ•จ์ˆ˜๋Š” Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ - ์„œ๋ธŒ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ณ , ๋ณ„์นญ ์•ˆ ์‚ฌ์šฉํ•ด๋„ ๋งŒ๋“ค์–ด์•ผ ํ•จ   ๐Ÿ“ NULL ์ฒ˜thswldud.tistory.com  ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฌธ์ œ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค  ๋ฌธ์ œ ํ’€์ด ๊ธฐ๊ฐ„ : 24๋…„ 12์›” 24์ผ ~ 26์ผ์—†์–ด์ง„ ๊ธฐ๋ก ์ฐพ๊ธฐSELECT O.ANIMAL_ID , O.NAMEFROM ANIMAL_OUTS AS O LEFT JOIN ANIMAL_INS AS I ON O.ANIMAL_ID = I.ANIMAL_IDWHERE I.ANIMAL_ID IS NULLORDE..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] MySQL Lv.2 ๋ฌธ์ œํ’€์ด ์ •๋‹ต ๋ชจ์Œ (feat. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ)

๐Ÿš€ MySQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ ๋ฐ”๋กœ๊ฐ€๊ธฐ [MySQL] ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ & ๋ชจ์Œโœ”๏ธ ์ฃผ์˜ - SELECT ์ ˆ์—์„œ ์ƒ์„ฑํ•œ ๋ณ„์นญ์„ Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ- Partition๊ณผ ๊ฐ™์€ ์œˆ๋„์šฐ ํ•จ์ˆ˜๋Š” Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ - ์„œ๋ธŒ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ณ , ๋ณ„์นญ ์•ˆ ์‚ฌ์šฉํ•ด๋„ ๋งŒ๋“ค์–ด์•ผ ํ•จ   ๐Ÿ“ NULL ์ฒ˜thswldud.tistory.com  ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฌธ์ œ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค  ๋ฌธ์ œ ํ’€์ด ๊ธฐ๊ฐ„ : 24๋…„ 12์›” 20์ผ ~ 23์ผ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐSELECT MIN(DATETIME) AS ์‹œ๊ฐ„FROM ANIMAL_INS ๊ณ ์–‘์ด์™€ ๊ฐœ๋Š” ๋ช‡ ๋งˆ๋ฆฌ ์žˆ์„๊นŒSELECT ANIMAL_TYPE , COUNT(*) AS countFROM ANIMAL_INSGROUP BY ANIMAL_TYPEORDER BY ..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] MySQL Lv.1 ๋ฌธ์ œํ’€์ด ์ •๋‹ต ๋ชจ์Œ (feat. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ)

๐Ÿš€ MySQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ ๋ฐ”๋กœ๊ฐ€๊ธฐ [MySQL] ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ & ๋ชจ์Œโœ”๏ธ ์ฃผ์˜ - SELECT ์ ˆ์—์„œ ์ƒ์„ฑํ•œ ๋ณ„์นญ์„ Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ- Partition๊ณผ ๊ฐ™์€ ์œˆ๋„์šฐ ํ•จ์ˆ˜๋Š” Where ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ - ์„œ๋ธŒ์ฟผ๋ฆฌ ๋งŒ๋“ค๊ณ , ๋ณ„์นญ ์•ˆ ์‚ฌ์šฉํ•ด๋„ ๋งŒ๋“ค์–ด์•ผ ํ•จ   ๐Ÿ“ NULL ์ฒ˜thswldud.tistory.com  ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฌธ์ œ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค  ๋ฌธ์ œ ํ’€์ด ๊ธฐ๊ฐ„ : 24๋…„ 12์›” 17์ผ ~ 19์ผ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ์กฐํšŒํ•˜๊ธฐ SELECT *FROM ANIMAL_INSORDER BY ANIMAL_ID ASC; ์—ญ์ˆœ ์ •๋ ฌํ•˜๊ธฐSELECT NAME, DATETIMEFROM ANIMAL_INSORDER BY ANIMAL_ID DESC; ์•„ํ”ˆ ๋™๋ฌผ ์ฐพ๊ธฐSELECT AN..

Copy