DB 인덱스(DB index) !! 핵심만 모아서 설명합니다 !! (31분이 아깝지 않을 겁니다)
Vložit
- čas přidán 20. 07. 2024
- #index #인덱스 #database #쉬운코드 #백발백중
DB 쿼리 속도를 높이는데 너무나도 중요한 것이 바로 index입니다
그래서 실무에서 매우 매우 자주 사용되는데요,
오늘 영상에서는 인덱스가 왜 중요한지, 어떻게 사용되는지, 동작 원리는 무엇인지
핵심만 모아서 아주 알차게 설명합니다
그럼 오늘도 고고씽!!!
00:00 오프닝
00:12 인덱스 있고 없고 성능 차이
01:29 인덱스 쓰는 이유
02:35 인덱스 거는 문법
06:53 multicolumn index & primary key
07:24 테이블에 걸려있는 인덱스 파악하기
08:28 B트리 기반 인덱스 동작 방식
18:32 인덱스 잘 이해했는지 예제
20:41 사용 쿼리에 맞춰서 적절히 걸어줘야함
20:57 쿼리가 어떤 인덱스를 쓰는지 확인하기
22:23 특정 인덱스를 사용하도록 명시하기
23:20 인덱스 막 만들어도 괜찮을까?
25:25 covering index?
26:39 hash index 소개 및 장단점
28:37 full scan이 더 좋은 경우
29:47 그 외 몇 가지 사항들
30:50 오늘 영상 주의 사항
31:12 클로징 - Věda a technologie
중요한 코멘트 몇 가지 남깁니다
🔸8:48 에서 B tree 기반 인덱스라고 설명을 하면서 왜 트리 구조가 아닌지 궁금하신 분들이 계실 것 같습니다
이 영상을 보시는 분들 중에는 트리가 뭔지 모르는 분들이 계실 수 있고, 설명할 당시에는 아직 B tree를 다루지도 않았었기 때문에
트리 구조 보다는 테이블 형태로 표현을 하고 설명을 드리는 것이 이해할 때 보다 더 쉽게 이해하실 수 있을 것 같아서 이렇게 설명을 드리게 됐고요,
실제로는 트리 구조로 저장이 됩니다
이 부분 관련 보다 정확한 내용은 B tree 영상들을 참고해 주세요~
1부 : B tree 개념, 특징, 데이터 삽입 방식 : czcams.com/video/bqkcoSm_rCs/video.html
2부 : B tree 데이터 삭제 방식 : czcams.com/video/H_u28u0usjA/video.html
3부 : B tree 계열이 DB 인덱스로 쓰이는 이유(추천!) : czcams.com/video/liPSnc6Wzfk/video.html
🔸9:52 에서 '쉽게 설명해서 binary search를 한다'고 했지만,
말 그대로 쉽게 설명하기 위해 그렇게 말씀드린 것이고요,
실제로 B tree에서 search는 binary search가 확장된,
즉, 두 부분으로 나누는 것이 아니라 더 많은 부분으로 나눠서 그 중에 한 부분을 (트리 세계관으로 설명하면 한 서브트리를) 재귀적으로 search하는 형태입니다
엄청나다... 두 번째로 엄청난건 이 강의가 공짜라는 사실이다...
엄청더블콤보!!
출근길에 영상 하나씩 보고 있습니다! 궁금했던 개념들 친절하고 쉽게 알려주셔서 이해가 잘 돼요! 감사합니다~!😊
캬 ~ 적당한 빠르기와 잘 이해되는 설명까지! 감사합니다 :)
와 최고였습니다. 감사합니다. 2~3번 보면서 정리해둬야겠어요 :)
내용 진짜 알차네요. 감사합니다!
정말 최고입니다.. ! 많은 도움되었습니다 감사합니다
문제 예시가 있으니까 정말 너무 너무 좋네요!! 덕분에 훨씬 와닿는 것 같아요 ㅎㅎ
이번 스터디 때도 쉬운코드님 열심히 홍보해야겠습니다 ㅋㅋㅋ
와우와우!!! 그렇게 해주시면 진짜 너무너무 감사하죠!!!ㅎㅎ
찐으로 최고십니다!! 크~!! 👍👍👍
귀한 내용 감사합니다. 쉽게 이해할 수 있었습니다!
너무 잘보고 있습니다 좋은 강의 감사드려요
인덱스 개념 잡기에 최고 영상이라고 생각합니다!👍👍😮
면접 볼 때 B-Tree에 대해서 물어봤는데 설명을 제대로 못해서 떨어졌던 기억이 나네요.
덕분에 쉽게 이해가 됐습니다.
댓글에 추가설명 써주셔서 더 좋았네요.
헉 그런 일이 있었군요 ㅠㅠ 다음엔 합격 갑시다~!!
시간가는줄 모르고 봤습니다..!! DB에서 인덱스의 중요성을 많이 들었지만 어떻게 왜 사용하는지 몰랐는데 진짜 설명을 너무 잘해주셔서 감사합니다. 다른 영상 정주행 하러 가겠습니다..!
크~👍 유익하게 봐주셔서 정말 감사합니다 :)
개발에 많은 도움이 됐으면 좋겠어요 😊
제가 인덱스를 공부하기 전에 봤더라면 훨씬 수월하게 공부했을텐데ㅠㅠ 그만큼 내용이 좋아서 복습하기도 좋았습니다! 커버링 인덱스까지 설명해주셨네요! 감사합니다 쉬운코드님!
좋게 봐주셔서 정말 감사합니다 :) 항상 애청해 주셔서 큰 힘이 됩니다!! 👍
인덱스에 대한 정리가 된 것 같네요. 감사합니다!!
이번 강의도 감사합니다!! 인덱스 정말 말만 들어봤는데 제대로 배우네용🙏
감사합니다 :) 인덱스는 실제 쿼리 성능에도 중요하기 때문에 잘 알고 잘 쓰는게 너무 중요하죠~
선생님은 정말 제가 궁금한걸 영상에 다 넣으신 것 같아요
어떻게 초보 개발자 마음을 이리 잘 아시나요!!
좋은 영상 정말정말 감사드려요 😍
크~!! 도움드릴 목적으로 만든거라 도움드릴 수 있도록 잘 만들어야죠 ㅎㅎ
목적 달성한 것 같아서 기분 좋네요 😊
좋은내용 감사합니다!
좋은 강의 너무너무 감사합니다!
와 선생님 명강의네요 예시가 좋아서 이해하기 쉬워요! 😊 감사합니당
헤헤 쉽게 이해가 됐다니 정말 다행입니다 뿌듯하네용 :)
댓글 감사합니다~! 👍
정말 감사합니다! 이해가 매우 잘 되네요.
헤헤 도움이 돼서 뿌듯하네요👍
와... 감탄하면서 봤어요. 감사합니다. 구독! 좋아요! 들어갑니다!
증말 깔끔하네요 감사합니다
친절하고 자세한 설명 감사합니다ㅜㅜ
욕심 같아서는 더 많은 영상이 올라왔으면 좋겠네요ㅎㅎㅎ(하지만 건강이 우선입니당!)
크 저야말로 꾸준히 시청해주시고 댓글도 자주 달아주셔서 감사하죠!! 👍👍👍
마침 지금 감기몸살 중이었는데 마지막 문장이 저를 살렸네요 ㅋㅋㅋㅋㅋ
얼릉 회복해서 다시 열심히 달려보겠숩니당 :)
좋은 강의 정말 감사합니다!!
좋은 댓글 감사합니다 :) 👍
좋은 영상 감사합니다!
정말 최고입니다! 감사합니다!
응원의 댓글 정말 감사합니다 !! 진심으로 최고십니다 !! 👍
항상 최고입니다👍👍
승욱님도 항상 최고십니다!! 🎉👍👍
와 어떻게 이걸 한마디도 안절고 설명하지?????? 신인가????????
인덱스를 이렇게 쉽게 이해할 수 있다니.... 구독 박아버렸습니다 ㅠㅠㅜ 감사합니다
쵝오십니다!
이해가 진짜잘됩니다. 감사합니다!
다행입니다 :) 유익하게 봐주셔서 감사합니다~ 👍
양질의 컨텐츠 항상 감사합니다!! hash index, sorted index, b + tree index 와 관련해서 query hint를 통한 인덱스 스캔 같은거 소개해주는 거도 재밌을 것 같아요!
귀한 댓글 감사합니다 !! :)
그리고 콘텐츠 추천도 감사합니다!! 👍
영상에서 query hint와 explain을 짧게 소개했는데 조금 더 자세히 설명해주면 좋겠다는 말씀으로 이해하면 될까용??
@@ez. 넵 안녕하세요 ~ 넵 제 답변이 너무 짧았네요. 영상보면서 답글을 달아서 ㅎㅎ
저는 이 영상을 보고 mysql의 buffer의 종류와 각 인덱스 스캔 별 buffer가 어떻게 이용되는지 등.. 정리하면 백엔드 개발자로서 db에 대한 이해가 훨씬 높아지겠다~ 생각을 했습니다. 좋은 영상 다시 한 번 감사합니다. 계획대로 해주셔도 되요 ㅎㅎ 항상 보고 있습니다.
아하 자세히 설명주셔서 감사합니다 :) 👍제가 그럼 검토해보고 당장은 못하더라도 추후에 다뤄볼 수 있도록 해볼게요
언제나 애청해주시고 댓글주셔서 정말 감사합니다!!👍 항상 큰 힘이 되어요 💪😄
좋은 내용 정말 감사합니다!
소중한 댓글 정말 감사합니다 :) 👍
덕분에 좋은 내용 잘 보고 갑니다.
정말 감사합니다.
유익하게 봐주셔서 저도 감사합니다 :) 👍
이제야 정리되는 기분이네요. 감사합니다.
오오~ 도움 드릴 수 있어서 뿌듯하네요 ✌
설명 미쳤네요.. 감사합니다
후후후 앞으로도 미친 퍼포먼스 보여드리겠습니다 👍
너무 재밌게 잘봤습니다 감사합니다 : )
헤헿 언제나 재밌게 봐주셔서 감사합니다 👍👍👍
항상 좋은 강의 감사합니다 😄 혹시 인덱스 시리즈 더 해주실 수 있나요? 실행 계획 관련한 강의해주시면 너무 좋을 것 같아요!
크~! 항상 애청해주시고 좋은 댓글도 남겨주셔서 감사합니다 !! :) 👍
혹시 요청주신 내용이 explain을 통해 execution plan을 보는 것을 말씀하시는 걸로 이해하면 될까용?
저도 인덱스 시리즈 더 해주시면 좋을 것 같습니다!! query hint나 인덱스 통해서 file access하는 방식 등등이요!!
옙~! 시리즈로 준비된 순서가 있어서 당장은 어려울 수 있겠지만 나중에 기회만들어서 준비해 볼게요 :) 👍
기본적인 crud 를 경험해본 초급 개발자에게 최고의 영상
제가 근래 찾은 유튜버중에 가장 좋은 컨텐츨르 제공하고 계시네요 직원들에게도 공유하겠습니다 !!
우와 ㅠㅠ 엄청난 극찬 정말 감사합니다 ㅠㅠ 👍👍👍
앞으로도 꾸준히 양질의 콘텐츠를 업로드해서 (직원분들께도 그렇고) 여러모로 도움드릴 수 있도록 할게요 :)
좋은 설명 감사합니다 바로 좋아요 구독 눌렀습니다.
크~!! 구독은 사랑입니다 ㅠㅠ 감사합니다!! 👍
강의가 아주 깔끔하고 이해하기 쉽네요
헤헤 엄청난 칭찬 정말 감사합니다 :) 👍
정말 좋은 수업이었습니다!
그저 빛👍
감사합니다 💓
ㄷㄷㄷ 쉬운설명 지립니다.
이 영상이 유명해지지 않았으면 좋겠습니다.
왜냐하면 너무 설명을 잘해주셔서 저만 보고싶기 때문이죠! ㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋ 특급 칭찬 감사합니다!! 👍
감사합니다 !
쉬운코드님이 인덱스 강의 해주시면 어떨까 기대하고 있었는데 마침 영상이 나왔네요 ㄷㄷ 잘 보도록 하겠습니다 ㅠㅠ
와우 타이밍이 ㄷㄷㄷ
이번 영상도 진짜 열심히 만들었어요 ㅎㅎ 조금이라도 도움이 되면 좋겠네요 :) 👍
쉬운코드님 최고!!!!!
피어나는 수련 lil Soo 님도 최최고!!!!!
좋아요 👍
감사합니다
와우...감사합니다...정배속으로 다 보도 갑니디
당연히 구독이다 이분은
구글에 아무리 쳐도 안나오는 정보가 여기 있었네요 감사합니다. 인덱스 컬럼 + 인덱스가 아닌 컬럼 조합은 구글에 아무리 쳐도 안나오더라고요 거의 블로그들이 어디 있는 내용들 복붙 수준이라서 ㅠ
오오! 도움을 드릴 수 있어서 기분이 정말 좋습니당ㅎㅎ :)
댓글 감사합니다 !! 👍
와🎉🎉🎉🎉
오예~!! 👍👍👍👍
알짜 내용들만 잇네요 ㅎㅎ 감사합니다
헤헤 좋은 말씀 감사합니다 👍
자주 들러주세용 :)
잘 보고갑니다. 그런데 궁금한 점이 있어서 댓글을 답니다.
a, b 칼럼을 이용해서 멀티 칼럼 인덱스 생성 후 b 칼럼만 이용해서 조회 시 (a, b) 멀티 칼럼 인덱스에서는 b 칼럼만 봤을 때는 정렬이 되어 있지 않아 사용하지 않는다고 하였습니다.
그런데 a 칼럼의 경우 멀티 칼럼 인덱스에서 a 칼럼을 우선하여 정렬이 되어 있기 때문에 a 칼럼만 사용하는 경우에는 멀티 칼럼 인덱스를 써도 정렬의 효과를 볼 수 있기 때문에
사용이 가능할 것으로 판단되는데 실제로 DB 에서도 멀티 칼럼 인덱스의 가장 왼쪽 칼럼만 이용해서 조회시 인덱스를 이용하게 되나요?
죄송합니다.. 제가 이 댓글을 단 후에 바로 영상에서 설명해주셨네요;;
앗 죄송한건 아니죠~ㅎㅎ 항상 영상을 유익하게 봐주셔서 감사합니다 :)
지금까지 본 인덱스 영상 중에 제일 낫네요
와우 엄청난 극찬 감사합니다 :) 👍
인덱스를 생성하면 가상테이블 형태로 생성되는건가요 ??
혹시 설명해주신 인덱스가 넌 클러스터 인덱스일까요?
아하
23:24
n+1문제도 알려주세요 ㅎㅎ
크 영상 시청해주셔서 감사합니다!!
그런데 혹시 n+1문제가 뭐였죠??ㅠㅠ
제가 뭔가 비슷한 말을 했었다면 기억을 못하고 있습니다 ㅠㅠ 도와주세요 ㅠㅠ
@@ez. 아 사실 db랑 직접적으로 관련있다고는 못하지만 db활용할때 성능향상을 위해 orm,jpa에서 n+1문제가 발생한다고 하더라구요 이부분도 취업할때 자주등장하는 개념인거 같은데 아신다면 도움받고 싶어서 말씀드려봅니다..
@@user-xe6fu1qn3c 아아 JPA 관련이었군요~ㅎㅎ 제가 자바 진영에 있다가 JPA를 쓰기 시작할 즈음에 파이썬 쓰는 회사로 이직하는 바람에 JPA 경험이 없어서 몰랐네요 ㅠ
자바가 좋아서 다시 자바로 돌아왔는데 당장은 전업 유튭 하느라 어렵겠지만 나중에 JPA 어느 정도 써본 뒤에 영상을 올려보겠습니다 👍
@@ez. 네 ㅎㅎ 영상 잘보고 있습니다
@@user-xe6fu1qn3c 헤헤 감사합니다 👍
인간인가 AI 인가..말을 더듬지를 않는다..어느쪽인지 밝혀라.
정말 큰 도움이 됐어요. DB 1학기중인 학생입장에서 초보적인 질문 하나 드릴께요.
제가 이해한 B트리 인덱스 사용에 관해..
1. 테이블을 생성할 때, 향후에 검색 할 만한 경우를 예상하고 인덱스들을 생성.
2. 검색할 때, 생성된 인덱스들을 확인하고 원하는 인덱스가 있을때는 그것을 사용하고 없을때는 인덱스를 추가해서 검색.
이 과정에서 처음에 인덱스를 만들지 않고 나중에 검색할 경우에 각자의 용도에 맞게 추가해서 사용하는 것은 추천하지 않는지요?
초기 생성 후, 데이터가 추가될 때마다 인덱스가 변경되는 속도의 합과 나중에 인덱스를 생성해 검색하는 시간의 합의 비교도 궁금합니다. (실무환경에서요)
그리고 적절하게 인덱스를 생성하고 사용 후, 삭제하면 저장공간도 확보하는 방법도 궁금합니다.
늘 행복하시고 건강하세요~ 🙂
오 DB 수업 화이팅입니다 !! :)
일반적인 백엔드 환경을 기준으로 설명드리면 1번과 2번 모두 흔하게 일어납니다
서비스 기능은 계속 추가 되기 마련이라 처음부터 모든 가능한 쿼리를 짐작하긴 어렵기 때문이죠
다만 실제로 사용될 쿼리에 대해서 일부러 인덱스를 만들지 않아서 full scan으로 동작하도록 하다가 나중에 인덱스를 추가하는 경우는 거의 못 본 것 같습니다
그리고 현재 전혀 사용되지 않고 앞으로도 사용되지 않을 것 같다면 이런 인덱스는 삭제 처리를 해주지만
그런 경우가 아니라면 한번 만들어진 인덱스를 삭제하는 경우는 못 본 것 같아요~
이번 한 주도 수업들으시랴 공부하시랴 고생 많으셨습니다 👍
@@ez. 친절한 설명 감사드립니다.^^ 이해 안될 때마다 큰 도움 주셔서 더욱 감사드려요~
@@big_chance 좋은 말씀 감사해요~ 앞으로도 좋은 영상으로 항상 응원할게요 :)
값을 삽입하여 인덱스 재정렬동안 조회쿼리가 날라오면 속도가 줄어드나요? 자세히 알고싶어요 ㅠㅠ
좋은 영상 감사합니다!