Database (56) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ #5. ๋ ๋ฒ์งธ ์์ - 2 Lab: Indexing for WHERE ๋๋์ด ๋ ๋ฒ์งธ ์์ (์ฌ์ค์ ์ฒซ ๋ฒ์งธ ์์ ์ด๋ค. ์ ๋ฒ ์์์ prerequisite์ด์์ด์..)์ ์์ํ๋ค. ์ด๋ฒ ์์ ์ Indexing for WHERE์ผ๋ก ์ํฉ์ ๋ง๊ฒ ์ธ๋ฑ์ค๋ฅผ ์ค๊ณํ๋ ๋ฒ์ ๋ฐฐ์ฐ๋ ์์ ์ธ ๊ฒ ๊ฐ๋ค. ์ ์ผ ๋จผ์ ํ ์ผ์ StackOverflow ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋ฑ์ค๋ฅผ ๋ชจ๋ drop ํ๋ ๊ฒ์ด๋ค. โ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ์๋ ์ฟผ๋ฆฌ๋ฅผ supportํ๋ ์๋ง์ ์ธ๋ฑ์ค ๊ตฌ์ฑํ๊ธฐ. ๋จผ์ ์ด ์ฟผ๋ฆฌ๊ฐ ์ผ๋งํผ์ logical reads๋ฅผ ํ๋์ง๋ถํฐ ํ์ธํด๋ณด์. ์ด ์ฟผ๋ฆฌ๋ 7,778 ํ์ด์ง์ logical reads๋ฅผ ํ๋ค. ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ด๋ป๊ฒ ์ธ์ธ์ง๋ฅผ ๋ด์ผํ๋๋ฐ, ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋๊น WebsiteUrl๊ณผ Location์ผ๋ก ์ธ๋ฑ์ค ์ปฌ๋ผ์ ๊ตฌ์ฑํ๊ณ DisplayName๊ณผ Id๋ฅผ INCLUDEํ๋ฉด ๋ ๊ฒ ๊ฐ์ .. [SQL ํ๋] ์ฟผ๋ฆฌ ์ด์๊ฒ ๋ง๋ค๊ธฐ - ์ค์ฒฉ REPLACE https://youtu.be/6BL4dM12LYk ํ๋์ ๋ฐ์ดํฐ์ ์ฌ๋ฌ ๋ฒ์ REPLACE๋ฅผ ์ ์ฉํด์ผ ํ ๋ ์๋์ ๊ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๊ฒฝํ์ด ์์ ๊ฒ์ด๋ค. ugly ํ๊ณ ์ฝ๊ธฐ ์ด๋ ต๋ค. ์ด๊ฑธ CROSS APPLY๋ฅผ ์ฌ์ฉํ๋ฉด ์ข ๋ ์ด์๊ฒ ๋ง๋ค ์ ์๋ค. ํจ์ฌ ๊ฐ๋ ์ฑ์ด ์ข์์ก๋ค. ์ฑ๋ฅ์ ๋ ์ฟผ๋ฆฌ ๋ชจ๋ ๋์ผํ๋ค. #4. ์ฒซ ๋ฒ์งธ ์์ - How to Think Like the Engine 2 (* ์ง์ ์ฝ๊ณ ๋ฃ๊ณ ํด์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ง์ ์ ์์ ์ฃผ์) โ ๋ค ๋ฒ์งธ ์ฟผ๋ฆฌ SELECT * FROM dbo.Users WHERE LastAccessDate > '2014/07/01' ORDER BY LastAccessDate; ์ด๋ฒ์๋ id๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ์ปฌ๋ผ์ ๋ค ๊ฐ์ง๊ณ ์๋ณด์. ์ด ์ฟผ๋ฆฌ๋ ์ธ ๋ฒ์งธ ์ฟผ๋ฆฌ(id๋ง SELECTํ๋ ์ฟผ๋ฆฌ)๋ณด๋ค ๊ต์ฅํ ์ฑ๋ฅ์ด ๋ณ๋ก์ธ ์ฟผ๋ฆฌ๊ฐ ๋ ๊ฒ์ด๋ค. ์ ๋ณ๋ก์ผ๊น? Do we work harder to read the data? YES. SELECT id ์ฟผ๋ฆฌ๋ ๊ฐ์ row๋ฅผ ์ฝ๊ฒ ๋๊ธด ํ ๊ฑด๋ฐ, ์ด๋ฒ์๋ About me ์ปฌ๋ผ ์ฒ๋ผ varchar(max)๋ nvarchar(max) ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ปฌ๋ผ๋ค๋ ๊ฐ์ด ๋ธ๋ ค์ฌ ๊ฒ์ด๋ค. ์ด๋ฒ์๋ ๊ทธ๋ฐ ์ปฌ๋ผ๋ค์ ๊ฐ๊ณ ์๋.. [SQL ํ๋] ์ํํธ ํ์ฑ vs ํ๋ ํ์ฑ SGA (System Global Area) ์๋ฒ ํ๋ก์ธ์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๊ฐ ๊ณตํต์ผ๋ก ์ก์ธ์คํ๋ ๋ฐ์ดํฐ์ ์ ์ด ๊ตฌ์กฐ๋ฅผ ์บ์ฑํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์ (Library Cache) SQL ํ์ฑ, ์ต์ ํ, ๋ก์ฐ ์์ค ์์ฑ ๊ณผ์ ์ ๊ฑฐ์ณ ์์ฑํ ๋ด๋ถ ํ๋ก์์ ๋ฅผ ๋ฐ๋ณต ์ฌ์ฌ์ฉํ ์ ์๋๋ก ์บ์ฑํด ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ (SGA ๊ตฌ์ฑ ์์) ์ฌ์ฉ์๊ฐ SQL๋ฌธ์ ์ ๋ฌํ๋ฉด DBMS๋ SQL์ ํ์ฑํ ํ ํด๋น SQL์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์บ์์ ์กด์ฌํ๋์ง๋ถํฐ ํ์ธํ๋ค. ๋ง์ฝ ์บ์์์ ์ฐพ์ผ๋ฉด ๊ณง๋ฐ๋ก ์คํ ๋จ๊ณ๋ก ๋์ด๊ฐ์ง๋ง, ์ฐพ์ง ๋ชปํ๋ฉด ์ต์ ํ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค. ์ํํธ ํ์ฑ SQL์ ์บ์์์ ์ฐพ์ ๊ณง๋ฐ๋ก ์คํ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ ๊ฒ ํ๋ ํ์ฑ SQL์ ์ฐพ๋ ๋ฐ ์คํจํด ์ต์ ํ ๋ฐ ๋ก์ฐ ์์ค ์์ฑ๋จ๊ณ๊น์ง ๋ชจ๋ ๊ฑฐ์น๋ ๊ฒ ์ถ์ฒ : ์น์ ํ .. [SQL ํ๋] SQL ์ต์ ํ SQL ์ต์ ํ ๊ณผ์ โ SQL ํ์ฑ ์ฌ์ฉ์๋ก๋ถํฐ SQL์ ์ ๋ฌ๋ฐ์ผ๋ฉด ๊ฐ์ฅ ๋จผ์ SQL ํ์(Parser)๊ฐ ํ์ฑ์ ์งํํ๋ค. SQL ํ์ฑ์ ์์ฝํ๋ฉด ์๋์ ๊ฐ๋ค. ํ์ฑ ํธ๋ฆฌ ์์ฑ : SQL ๋ฌธ์ ์ด๋ฃจ๋ ๊ฐ๋ณ ๊ตฌ์ฑ์์๋ฅผ ๋ถ์ํด์ ํ์ฑ ํธ๋ฆฌ ์์ฑ Syntax ์ฒดํฌ : ๋ฌธ๋ฒ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธ. ์๋ฅผ ๋ค์ด, ์ฌ์ฉํ ์ ์๋ ํค์๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์์๊ฐ ๋ฐ๋ฅด์ง ์๊ฑฐ๋ ๋๋ฝ๋ ํค์๋๊ฐ ์๋์ง ํ์ธ Semantic ์ฒดํฌ : ์๋ฏธ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธ. ์๋ฅผ ๋ค์ด, ์กด์ฌํ์ง ์๋ ํ ์ด๋ธ ๋๋ ์ปฌ๋ผ์ ์ฌ์ฉํ๋์ง, ์ฌ์ฉํ ์ค๋ธ์ ํธ์ ๋ํ ๊ถํ์ด ์๋์ง ํ์ธ โก SQL ์ต์ ํ SQL ์ตํฐ๋ง์ด์ ๊ฐ ๋ฏธ๋ฆฌ ์์งํ ์์คํ ๋ฐ ์ค๋ธ์ ํธ ํต๊ณ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ํ ์คํ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ ๋น๊ตํ ํ ๊ฐ์ฅ ํจ์จ์ ์ธ ํ๋๋ฅผ ์ ํํ๋ค. ๋ฐ์ดํฐ.. #3. ์ฒซ ๋ฒ์งธ ์์ - How to Think Like the Engine (* ์ง์ ์ฝ๊ณ ๋ฃ๊ณ ํด์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ง์ ์ ์์ ์ฃผ์) ์์์์ ์ฌ์ฉํ ํ ์ด๋ธ์ StackOverflow2010.dbo.Users ํ ์ด๋ธ์ด๋ค. PK๋ Id์ด๋ค. clustered index๊ฐ Id๋ก ์กํ์๋ค๋ ๊ฒ์ด๊ณ , ์ฌ์ค์ clustered index = ํ ์ด๋ธ ์์ฒด ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค๊ณ ํ๋ค. ๋ธ๋ ํธ ์์ ์จ๊ป์ ์ฌ๋ ค์ฃผ์ pdf ์ ์ฒซ ์ฅ์ ๋ณด๋ฉด clustered index์ ๋ฐ์ดํฐ๊ฐ Id๋ก ์ ๋ ฌ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ ํ์ผ์ ๋ดค์ ๋ clustered index๋ Id๋ก ์ ๋ ฌ์ด ๋์ด ์๊ณ ๊ทธ ์ธ์ ์ปฌ๋ผ๋ค์ ๊ฐ๋ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค. → ์ ํํ๊ฒ ๋ฐ์ง์๋ฉด ์ด ํํ์ ๋ง์ง ์๋ ๊ฒ์ด๋ผ๊ณ ํ๋๋ฐ ์ผ๋จ ์ด๋ ๊ฒ ์ค๋ช ํด๋์ ๋ค๊ณ ํ๋ค. AboutMe ์ปฌ๋ผ์ด ์ข์ ์๋ค. ์ด .. #2. ์ฒซ ๋ฒ์งธ ์์ - ์ฌ์ ์์ (* ์ง์ ์ฝ๊ณ ๋ฃ๊ณ ํด์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ง์ ์ ์์ ์ฃผ์) ์ค๋์ ์ฒซ ๋ฒ์งธ ์์ ์ ์๊ฐํด๋ณด๋ ค ํ๋ค. ์ฒ์ ํ๋ ๊ฑด ์๋์ง๋ง ์์ด๋ฒ๋ฆฐ ์ด์ฌ์ ๋์ฐพ๊ณ ์ ์ฒ์์ฒ๋ผ ์ํ ์์ ์ด๋ค. ๋จผ์ ์ด๋ฒ ์์ ์ ๋ชฉํ์ด๋ค. clustered index์ nonclustered index์ ์ฐจ์ด์ ์ ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ์ด๊ณ , ์ด๋ป๊ฒ convering index๋ฅผ ๋ง๋๋์ง, ๊ทธ๋ฆฌ๊ณ ์คํ ๊ณํ์ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ๋ฐฐ์ธ ๊ฒ์ด๋ค. ๋๊ทผ๋๊ทผ. ๊ทธ๋ฌ๋ ค๋ฉด ๋จผ์ ํด์ผํ ๊ฒ๋ค์ด ์๋ค. ์ผ๋จ ๋ธ๋ ํธ ์์ ์จ๊ป์ ์ฌ๋ ค์ฃผ์ stackoverflow ๋ฐ์ดํฐ pdf 5์ฅ์ ํ๋ฆฐํธํด์ผ ํ๋ค. ์ค๋ ๋ค์ ์ ํ๋ธ ์์์ ๊ฐ์์๋ฃ๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ํ์ด์ง์ด๋ค. ์์์์ ์ค๋ช ํ๋ Stackoverflow ๋ฐ์ดํฐ์ ์ผ๋ถ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ์ผ์ด๋ค. ์ด ํ์ผ๋ง ์์ด๋ ์.. #1. Brent Ozar ์์ (์ง๊ธ์ ํด์ฌํ์ง๋ง) ์ ํ์ฌ์์ ๊ฐ๋ฐ์ ํ๋ค๊ฐ ์ฐ์ฐํ DB ๊ด๋ จ ์ผ์ ์์ํ๊ฒ ๋์๋ค. ๊ทธ ๋น์ ๋๋ ์ธ๋ฑ์ค๊ฐ ๋ญ๋๊ณ ๋ฌผ์ผ๋ฉด ์ค๋ช ๋ ์ ๋ชปํ๋ ์ธ๊ฐ์ด์๊ธฐ ๋๋ฌธ์, ์ด๋ฐ ๋ด๊ฐ ์๋ฌด๋ฐ ์ค๋น ์์ด ์ผ์ ํ๋ค๊ฐ ์ง์ ์ ์์ ์๋ ์๊ฒ ๋ค๋ ์๊ธฐ๋ฅผ ๋๊ผ๋ค. ๋ญ๋ผ๋ ๊ณต๋ถํด๋ด์ผํ ๊ฒ ๊ฐ์์ ๊ตฌ๊ธ์ ๋ค์ง๊ธฐ ์์ํ๋ค. ๊ทธ ๋น์ ๋ด๊ฐ ์ฌ์ฉํ๋ DBMS๋ SQL Server ์๊ณ ๊ทธ์ ๊ด๋ จํด์ ์ธ๊ฐ๊ฐ์ ๊ฑฐ ์์๊น ํ๋ฉด์ ์ฐพ์๋ณด๋ค๊ฐ Brent Ozar์ด๋ผ๋ ์์ ์จ๋ฅผ ์๊ฒ ๋์๋ค. ์งง๊ณ ๋ถ์กฑํ ์์ด ์ค๋ ฅ์ผ๋ก ์ฌ์ดํธ๋ฅผ ์กฐ๊ธ ๋๋ฌ๋ณธ ๊ฒฐ๊ณผ ์ด ์์ ์จ๋ SQL Server์ ๋ฌ์ธ์ธ ๊ฒ ๊ฐ์๋ค. Microsoft Certified Master์ด๊ณ ํ๋์ด๋ DB ๋ชจ๋ํฐ๋ง ๋ฑ์ ๊ฒฝํ์ด ๋ง๊ณ , ๋ ๋ฐ๊ณ ์ปจ์คํ ๋ ํด์ค๋ค๋ ๊ฒ ๊ฐ์๋ค. ์ฌ์ดํธ๋ฅผ.. ์ด์ 1 2 3 4 5 6 7 ๋ค์