mongoDB를 사용해 게시글 삭제 기능을 구현하는 도중 유저의 어떤 정보를 이용해서 토큰 인증을 할지 고민이 되었다. 스키마 생성시 기본적으로 제공하는 _id 로 인증을 할지 아니면 유저의 닉네임(중복x)으로 인증을 할지 고민이 되었다.
DB 값을 조회할 때 어떤 데이터를 넣어야 더 빠를까?
검색 결과 DB의 인덱스를 알게 되어 살펴봤다
인덱스란 추가적인 쓰기 작업과 저장공간을 활용해 데이터베이스의 테이블 검색 속도를 높여주는 자료구조다.
인덱스를 활용하면 SELECT 뿐만 아니라 UPDATE, DELETE 이 둘의 성능도 향상된다고 한다. 그 이유는 얘네(?) 작업을 하기 위해서 조회가 선행되어야 하기 때문.
만약 인덱스를 사용하지 않는다면? 전체 검색 해야됨. 속도는 당연 훨씬 느리지.
DB는 인덱스는 항상 정렬된 상태를 유지해야 한다.그래야 값을 빠르게 탐색할 수 있으니깐. 그렇기 때문에 INSERT, UPDATE, DELETE를 수행할 때 DB는 다음과 같은 연산을 추가로 수행한다.
때문에 사용하지 않는 인덱스는 바로 제거 해줘야 한다.
테이블을 빠르게 조회할 수 있는 장점이 있다. 반면, 빠르게 조회하기 위해 인덱스를 정렬해야 하므로 추가적인 연산이 필요하다. 그 연산에 의해 인덱스의 크기가 커져 성능이 오히려 저하될 수 있다.
수정,삭제,생성을 하게 되면 인덱스의 추가 연산에 의해 쿼리 성능이 떨어질 수 있기 때문에 보다 상대적으로 조회를 훨씬 많이 할 경우에 사용하는편이 좋다.
또한 사용하지 않는 인덱스는 바로 삭제를 하는것이 좋다.