Index Scan 과 Index Seek 차이
인덱스 스캔(Index Scan)과 인덱스 시크(Index Seek)은 데이터베이스에서 쿼리를 실행할 때 사용되는 인덱스 액세스 메커니즘입니다.
두 가지 모두 인덱스를 활용하여 데이터를 검색하지만, 그 방식과 목적이 약간 다릅니다.
인덱스 스캔(Index Scan)
인덱스 스캔은 전체 인덱스를 순회하여 검색 조건에 맞는 모든 행을 찾는 방식입니다.
✔️ 사용
주로 대량의 데이터를 검색해야 할 때 사용됩니다.
✔️ 특징
데이터베이스 엔진은 인덱스 트리를 순회하면서 조건에 맞는 모든 행을 찾아야 하므로, 비교적 더 많은 자원을 소비합니다.
✔️ 발생
주로 인덱스의 선택도가 낮을 때나 검색 조건이 인덱스의 첫 번째 열이 아닐 때 발생할 수 있습니다.
인덱스 시크(Index Seek)
인덱스 시크는 인덱스의 특정 지점에서 검색을 시작하여 검색 조건에 맞는 행을 찾는 방식입니다.
✔️ 사용
주로 검색 조건에 맞는 행이 상대적으로 적을 때 사용됩니다.
✔️ 특징
데이터베이스 엔진은 인덱스의 특정 위치에서 검색을 시작하므로, 일반적으로 빠르고 효율적입니다.
✔️ 발생
주로 인덱스의 선택도가 높을 때 발생하며, 검색 조건이 인덱스의 첫 번째 열인 경우에 주로 발생합니다.
인덱스 스캔은 모든 행을 검색해야 하므로 대량의 데이터에 대해서는 더 많은 자원을 소비하지만,
인덱스 시크는 인덱스의 특정 지점에서 검색을 시작하므로 효율적입니다.
그러나 어떤 메커니즘이 실제로 사용되는지는 데이터베이스 엔진의 옵티마이저와 실행 계획에 따라 다르며,
쿼리와 인덱스 구조에 따라 달라집니다.
최적의 성능을 얻기 위해서는 인덱스를 적절하게 설계하고,
쿼리를 튜닝하여 쿼리 옵티마이저가 최적의 실행 계획을 선택할 수 있도록 하는 것이 중요합니다.
출처 | ChatGPT
'DataBase > MSSQL' 카테고리의 다른 글
MSSQL 에서 UDT 란 무엇인가 | ChatGPT (1) | 2024.10.11 |
---|---|
MSSQL 에서 READUNCOMMITTED 과 NOLOCK 차이 | ChatGPT (0) | 2024.09.10 |
MSSQL 클러스터 인덱스와 넌클러스터 인덱스란 | ChatGPT (0) | 2023.11.29 |
INNER JOIN 을 사용하여 UPDATE 문 작성 방법 | ChatGPT (0) | 2023.11.21 |
MSSQL 오늘 날짜 기준 달의 첫날과 마지막 날 구하는 방법 | ChatGPT (0) | 2023.10.30 |