๐CS/DB15 [DB] N + 1 ๋ฌธ์ ๊ฐ๋ ORM์์ ์ฑ๋ฅ ์ด์๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ์ฅ ํํ ์์ธ์ผ๋ก N+1 Problem์ด ์ธ๊ธ๋๋ค. N+1 Problem์ ์ฟผ๋ฆฌ 1๋ฒ์ผ๋ก N๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์๋๋ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ ์ํด ์ด N๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ ์ ๋งํผ ๋ฐ๋ณตํด์ 2์ฐจ์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ ๋ฌธ์ ์ ๋๋ค. ORM : (Object Relational Mapping) ๊ฐ์ฒด-๊ด๊ณ ๋งคํ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํ(์ฐ๊ฒฐ)ํด์ฃผ๋ ๊ฒ์ ๋งํ๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ค. ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๊ด๊ณํ ๋ชจ๋ธ ๊ฐ์ ๋ถ์ผ์น๊ฐ ์กด์ฌํ๋ค. ORM์ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํ์ฌ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๋ค. Persistence API๋ผ๊ณ ๋ ํ ์ ์๋ค. JPA : (Java.. 2021. 4. 11. [DB] Index ์ธ๋ฑ์ค๋? ์ธ๋ฑ์ค == ๋ชฉ์ฐจ, RDBMS์์ ๊ฒ์ ์๋๋ฅผ ๋์ด๊ธฐ ์ํ ๊ธฐ์ ์ธ๋ฑ์ค๋ ๊ฒฐ๊ตญ ์ง์ ํ ์ปฌ๋ผ๋ค์ ๊ธฐ์ค์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ผ์ข ์ ๋ชฉ์ฐจ๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค. ์ธ๋ฑ์ค๊ฐ ํ์ํ ์ด์ ์ปดํจํฐ๋ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ(ํ ์ด๋ธ ๋ฑ)๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋๋ฐ, ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋์คํฌ์์ ํ ์ด๋ธ ์ ์ฒด๋ฅผ ํ์ผ๋ฉด์ ์ฐพ์์ผ ํ๊ณ ์ด๋ฅผ Full Table Scan์ด๋ผ๊ณ ํ๋ค. ๋์ฉ๋ ๋ฐ์ดํฐ์์๋ ๊ต์ฅํ ๋นํจ์จ์ ์ด๋ค. ๊ทธ๋์ Full Table Scan์ ๋ฐฉ์งํ๊ธฐ ์ํด์ ๋ชฉ์ฐจ์ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค. ํน์ง ์ธ๋ฑ์ค๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค. B-Tree ํํ๋ก ์ ์ฅ๋จ ์์ ๋ ธ๋๊ฐ 2๊ฐ ์ด์ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ Page(Block)์ ๊ฐ์ฅ ๊ธฐ๋ณธ๋จ์ ๋ก ์ผ๋๋ค. ๋์คํฌ ์ฝ๊ธฐ ์ฐ.. 2021. 4. 4. [SQL] ๋ค์ค์ ๋ ฌ ORDER BY ๊ฒฐ๊ณผ ์งํฉ์ ์ฌ๋ฌ ์ด๋ก ์ ๋ ฌํ๋ ค๋ฉด ORDER BY ์ ์ ,(์ผํ) ๋ก ๊ตฌ๋ถ๋ ์ด ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค. ์๋๋ ์์ ์ ๋๋ค. ํ ์ด๋ธ id user_id title status created_at 1 123456789 ๊ฐ์ํ OK 2020-01-08 2 456789 ๋๋ฉด OK 2020-01-09 3 123789 ์ผ๊ณํ COMPLETE 2020-01-10 4 12312 ์ผ์ต OK 2020-01-09 5 45678943 ์กฑ๋ฐ COMPLETE 2020-01-13 ์กฐ๊ฑด ์ต์ ์์ผ๋ก ๋ํ๋๊ฒ ํ๋ค. status ๊ฐ์ด COMPLETE ์ธ row๋ ๋งจ ์๋์ ๋ฐฐ์น๋์ด์ผ ํ๋ค. SQL ORDER BY ๋ค์ค์ ๋ ฌ์ ํ ๋, ์ผ์ชฝ๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. (=์ฐ์ ์์๊ฐ ๋์ ์์๋๋ก ๋์ดํ์.) ์ฆ, .. 2020. 1. 9. [MySQL] Resotre Workspace ์ค๋ฅ DB์๋ฒ ์ ์์ ์ด์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋จ๋ฉด ๊ทธ ์ดํ์๋ค๋ฅธ DB์๋ฒ์ ์ ์์ด ์๋๋ ๋ฌธ์ ๊ฐ ์์๋ค. C:\Users\์ ์ ์ด๋ฆ\AppData\Roaming\MySQL\Workbench\sql_workspaces์ด ์๋์ ๋ด์ฉ์ ๋ชจ๋ ์ ๊ฑฐํ๋ฉด ์ ์ํ ๋๋ค. ์๋ณธ๊ธ 2019. 12. 10. [Sequelize v5] ์ํ๋ผ์ด์ฆ find ํจ์ ์ค๋ฅ (1) ๋ฌธ์ TypeError: User.find is not a function ์์ ์ค๋ฅ๊ฐ ์ดํ๋์ ๋๋ฅผ ๊ดด๋กญํ๋ค.. ์ฝ๋๋ฅผ ์ ์ ์ด ๋ค์ง๋ฉฐ ์คํ๊ฐ ์๋์ง ํ์ธํ๊ณ , ์ฃผ์์์น๋ ๋ฐ๊ฟ๋ณด๊ณ ๋ ธ์ค๋ ฅ์ ํด๋ดค์ง๋ง ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์ด์ ์์ฌํ ๊ฒ์ find ํจ์์ ๋ํ ์์ฌ๋ฐ์ ๋จ์ง ์์ ์ํ์๋ค. (2) ํด๊ฒฐ ํค์๋๋ '์ํ๋ผ์ด์ฆ find ํจ์ ์ฌ์ฉ' ์ผ๋ก ๊ฒ์ํด์ ์๋ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ฌ๊ณ ์ด์ ์ ๋ฌธ์ ๊ฐ ๋์๋ ์ค๋ฅ๋ค์ ํด๊ฒฐ๋ฐฉ์๋ ์ฝ๊ฒ ์ฐพ์ ์ ์์๋ค. https://www.zerocho.com/category/etc/post/5b4c1d526a3abe001b94de0b (etc) Node.js ๊ต๊ณผ์ ์ง์์๋ต์ฉ ํฌ์คํธ FAQ ์ค์ค๋ก ํด๋ณด๊ธฐ ํ์ด๋ ์๋์? - ์ ํ๋ธ๋ ์ธํ๋ฐ ๊ฐ์ข์์ ์ ๊ณตํฉ๋๋ค(์ธํ๋ฐ์์๋ ๋ฌด.. 2019. 5. 29. [MySQL] MySQL ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ๋ฐฉ๋ฒ (1) MySQL ์ ์ํ๊ธฐ cmd๋ฅผ ์คํํ๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๊ณ ์ด์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค. $ mysql -u root -p Enter password: mysql -u ๋ค์๋ ์ฌ์ฉ์๋ช , -p ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๋ ๋ป์ ๋๋ค. ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์ฐฝ์ด ๋จ๋ฉด MySQL ์ค์น ์ ์ค์ ํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค. (2) ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ์ ์ํด mysql ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ ํ๋กฌํํธ๊ฐ mysql> ๋ก ๋ฐ๋์๋ค๋ฉด ์ ์๋ ๊ฒ์ ๋๋ค. mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database .. 2019. 5. 22. ์ด์ 1 2 ๋ค์