2021-07-20(Tue)
Facts (์ฌ์ค, ๊ฐ๊ด)
CS admin์์ ๋ฐ์ํ๋ slow query๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์จ์ข ์ผ ๊ณ ๋ฏผํ๋ค.
Feelings (๋๋, ์ฃผ๊ด)
์จ๋ผ์ธ์ด์ด์ ๋ถํธํ ์ ์ ์ฌ์คํ ๋๊ผ๋ค. ์ฌ์๋์ด ์์ ๊ณ์ จ์ผ๋ฉด ๊ฐ๋ณ๊ฒ ๋ฌผ์ด๋ด์ ํ์ธ๊ฐ๋ฅํ ๋ถ๋ถ์ด์๋๋ฐ, ์จ๋ผ์ธ์ด์ด์ ์ฑํฌ๊ฐ ๋ฆ์ด์ก๋ค.
์ค DB SELECT ๊ถํ๋ ์์ง ์ฃผ์ด์ง์ง ์์์, SQL ํ๋ ์งํ์ด ์ด๋ ค์ ๋ค. ๊ฐ์ค๋ค์ ๋ฐ๋ก๋ฐ๋ก ํ์ธํ๊ธฐ ์ด๋ ค์ด ํ๊ฒฝ์ธ๊ฒ ์์ฝ๋ค. ๊ณง ์ธํ๋ผํ ๊ฒํ ๋๋๋ฉด ๊ถํ์ด ์ด๋ฆฌ๊ฒ ์ง!
ํ ๊ทธ๋๋ ๊ทธ ๋์ ์คํผ์ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๊ณ , kaminari gem ์์ค์ฝ๋๋ ๋ฏ์ด๋ณด๊ณ , SQL ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ํ์ตํ๋๊ฒ ์ฆ๊ฑฐ์ ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ผผ๊ผผํ๊ฒ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ค๋ณด๋ ๋ฐ์ดํฐ ๋งตํ ์ค๋ฅ๋ฅผ ์ฐพ์๋ผ ์ ์์๋ค. ์กฐ๊ธ์ด๋๋ง ๊ธฐ์ฌํ ๊ฒ ๊ฐ์์ ๊ธฐ๋ถ ์ข๋ค.
Findings (๋ฐฐ์ด ์ )
SELECT(*) vs SELECT(column) vs SELECT(column distinct) ์ ์ฑ๋ฅ์ ๋ํด์ ๊ฐ๋ ์ ์ธ์ ๋ค.
SELECT์ ๋ถํ์ํ ์ปฌ๋ผ์ SELECTํ์ง ์๋๋ก ํ๋ฉด ์ฑ๋ฅ์ด ํฅ์๋๋ค.
kaminari gem์์
SELECT COUNT(*)
์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ์ง ์์ผ๋ ค๋ฉด.without_count
๋ฅผ paginate object์์ ํธ์ถํ๊ฑฐ๋,total_pages
๊ฐ์ option์ผ๋ก paginate ๋ฉ์๋์ ์ ๋ฌํ๋ฉด ๋๋ค.
์ฐธ๊ณ
Affimation (์๊ธฐ ์ ์ธ)
๋๋ ๋ด๊ฐ ๋์์ด ํ์ํ์ง ์ฌ๋ถ๋ฅผ ์ ํ๋จํ๊ณ , ์ ์ ํ๊ฒ ํ์ํ ๋์์ ์ป๋ ๊ฐ๋ฐ์๋ค.
Last updated