is_public 필드에서 db_index를 사용하는 이유가 무엇인지 잘 모르겠습니다
687
작성한 질문수 5
강사님 안녕하세요! 제가 강의를 듣던중 is_public 필드에 db_index를 사용하는 이유를 잘 모르겠어서 서치를 해본결과 스택오버플로우에서 다음과 같은 답변이 있었습니다.
이 답변을 보고 db_index=True로 지정하면 데이터를 하나를 찾으면 검색을 멈춰 효율성을 올릴수 있다고 이해하였습니다. 그래서 여러 포스트에 대하여 is_public=True로 지정한후, GET 요청을 보내면 하나를 찾으면 검색이 멈춰 데이터 하나만 조회 되어야한다고 생각하고 테스트를 해본결과 is_public=True 인 모든 데이터가 조회되었습니다. 그레서 현재 db_index=True 인자가 어떤 역할을 하는것인지에 대한 혼란이 있습니다ㅠㅠ
답변 2
1
안녕하세요.
스크린샷으로 보여주신 내용은 unique=True 옵션을 지정할 때 db_index=True 옵션도 같이 지정하면 성능 상의 이점이 조금 있을 수 있다라는 내용입니다. 두 옵션은 별개의 옵션입니다.
- unique=True 옵션 : 데이터베이스 테이블에서 해당 테이블이 unique 제약사항(constraint)을 추가하겠다는 설정입니다. 이는 장고를 활용한 마이그레이션 시에 적용됩니다.
- db_index=True 옵션 : 해당 데이터베이스 컬럼에 index를 추가하겠다는 설정입니다. 이 역시 장고를 활용한 마이그레이션 시에 적용됩니다.
모델 필드에 대한 db_index=True 지정은 모델을 활용한 마이그레이션 시에, 해당 컬럼에 대한 db index를 생성하도록 설정하는 옵션입니다.
영어사전으로 생각해보시면 사전에는 색인(index)이 있어서 단어 찾기가 편리하죠. 색인(index)이 없다면 내가 원하는 단어를 찾기 위해서 사전 처음부터 끝까지 하나하나 살펴봐야할 것입니다. 색인이 있기에 빠르고 정확하게 내가 원하는 단어를 찾을 수 있는 것이죠.
데이터베이스에서 어떤 데이터를 찾을 때에 조회조건으로 지정되는 컬럼은 색인이 생성된 컬럼인 것이 조회 성능이 훨씬 나을 수 있습니다. 색인이 없어도 조회가 될 것이지만 테이블 전체를 다 뒤져야합니다. 이를 Full table scan이 발생한다라고 이야기합니다. 데이터가 적을 때에는 잘 느끼지 못하지만, 데이터가 많아질 수록 성능 저하가 급격하게 발생합니다.
구글에서 "데이터베이스 색인" 으로 검색해보시면 다양한 포스팅들을 확인하실 수 있으실 것입니다.
화이팅입니다. :-)
안녕하세요.
0
46
1
[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?
0
268
1
useEffect 훅에서 else 유무에 따른 결과
0
209
1
useAxios 훅의 dependency array 설정
0
242
1
useEffect에서 변수 업데이트 관련 질문
0
380
1
rest_framework.generics.CreateAPIView의 model 속성 유무
0
264
1
bootstrap4
0
466
4
리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요
1
358
1
admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법
0
570
3
useState는 필수일까요?
0
259
1
python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.
0
592
4
Django allauth를 사용한 소셜 로그인 시 에러
0
650
1
프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러
0
550
2
useLocalStorage() 함수 사용여부
0
224
1
django에 LOGIN_URL = '/accounts/login/'의 의미?
0
445
1
리듀서의 의미 재확인
0
425
1
simple-jwt Refresh Token 사용 노하우
0
895
2
docker compose 를 통한 배포 관련 오류 문의
0
667
1
파이썬 속도 장고 관련 궁금한게 있습니다.
0
360
1
is_like_user
0
230
1
related_name 오류
0
270
1
re_path 오류
0
255
1
re_path url
0
246
1
No post matches the given query
0
656
2





