반응형
SQL에서 인덱스는 테이블의 데이터에 대한 포인터를 말하는데
책의 목차와 비슷한 개념이라고 보면 된다
책에 목차가 있으면 특정 내용이 어디에 있는지 알기 쉬운 것처럼
테이블에 인덱스를 삽입하면 SELECT, WHERE 시 속도를 높여서
조회 결과를 더 빨리 얻을 수 있게 해준다
반면 INSERT, UPDATE 시에
인덱스가 들어있으면 속도가 느려진다
인덱스는 테이블 내에 데이터가
엄청나게 많을 경우에 주로 사용하는데
일반적인 예제는 데이터가 몇백~몇천만을 넘어가는 테이블에
인덱스가 모두 들어가 있는 것을 확인할 수 있다
인덱스를 넣지 않으면 테이블 조회 시
엄청난 시간이 걸리는 관계로 그냥 굳어버려서
사용할 수 없기 때문이다
인덱스를 넣으면 조회 속도도 빨라지고 좋아 보이지만
다음과 같은 경우에는 별로 권장하지 않는데
먼저 테이블에 데이터가 얼마 없을 경우에는
그냥 인덱스를 쓰지 않는 편이 더 빠르다
그리고 인덱스로 사용하는 열에
NULL이 지나치게 많으면 효율이 떨어지기 때문에
해당 열을 인덱스로 사용하면 안된다
그리고 마지막으로 인덱스를 넣은 테이블에
INSERT나 UPDATE를 많이 사용하면
인덱스를 넣지 않는 것을 권장하지만
실제 업무에서는 SELECT만 하는 테이블이 별로 없기 때문에
인덱스를 넣은 테이블에 주기적으로 대량의 INSERT, UPDATE를
하는 경우를 많이 발견할 수 있는데
딱히 방법이 없기 때문에 인덱스도 넣고
그 테이블에 INSERT와 UPDATE도 하게 되는 것이다
반응형
'기타 개념정리' 카테고리의 다른 글
애자일(Agile) 뜻부터 방법론까지 (0) | 2021.03.09 |
---|---|
CRON Expression 사용방법 및 생성기 (0) | 2021.02.23 |
SQL에서 Alias를 사용하는 이유 (0) | 2021.01.29 |
SQL IN EXISTS JOIN 성능 비교 및 용도 정리글 (0) | 2021.01.28 |
MySQL 에서 쿼리를 소문자로 작성해야 하는 이유 (0) | 2021.01.28 |
댓글