인덱스를 추가한다고 해서 항상 쿼리 성능이 향상되는 것은 아닙니다. 잘못된 인덱싱은 쿼리 속도를 크게 저하시킬 수 있습니다. 데이터베이스 인덱스는 특정 열의 정렬된 복사본과 테이블 행에 대한 포인터를 저장하는 별도의 데이터 구조로, 더 빠른 데이터 검색을 위한 로드맵 역할을 합니다. PostgreSQL 및 MySQL에서 일반적으로 사용되는 B-트리 인덱스는 데이터를 정렬된 계층적 트리 구조로 구성하여 범위 쿼리 및 정렬에 적합합니다. 해시 인덱스는 정확히 일치하는 경우 더 빠르지만 범위 쿼리에는 효과적이지 않습니다. 고유 값이 많은(높은 카디널리티) 열에 인덱싱하면 쿼리가 빨라지지만, 고유 값이 적은(낮은 카디널리티) 열에 인덱싱하면 과도한 무작위 I/O로 인해 속도가 느려질 수 있습니다. 인덱스는 INSERT, UPDATE, DELETE 시간을 늘리고 저장 공간을 차지하여 쓰기 성능에 영향을 미칩니다. 현명한 인덱싱 전략에는 기본 키, 외래 키, 자주 쿼리되는 고유 값이 많은 열, 다중 열 쿼리를 위한 복합 인덱싱이 포함됩니다. 고유 값이 적은 열, 작은 테이블, 거의 사용되지 않는 열, 자주 업데이트되는 열에는 인덱싱을 피하는 것이 중요합니다. `EXPLAIN ANALYZE`를 사용하여 인덱싱 전후의 쿼리 성능을 측정하면 실제 영향을 파악하는 데 도움이 됩니다. 고유 값이 많은 열에 집중하고 쓰기 성능을 고려한 전략적 인덱싱은 더 빠른 쿼리와 효율적인 리소스 사용으로 이어집니다.
dev.to
Database Indexing Done Right: Why Your "Optimized" Queries Might Be Slower Than Before
Create attached notes ...
