본문 바로가기

DataBase/MSSQL

Index Scan 과 Index Seek 차이 | ChatGPT

728x90
반응형

Index Scan 과 Index Seek 차이

인덱스 스캔(Index Scan)과 인덱스 시크(Index Seek)은 데이터베이스에서 쿼리를 실행할 때 사용되는 인덱스 액세스 메커니즘입니다.

두 가지 모두 인덱스를 활용하여 데이터를 검색하지만, 그 방식과 목적이 약간 다릅니다.


인덱스 스캔(Index Scan)

인덱스 스캔은 전체 인덱스를 순회하여 검색 조건에 맞는 모든 행을 찾는 방식입니다.

✔️ 사용

주로 대량의 데이터를 검색해야 할 때 사용됩니다.

✔️ 특징

데이터베이스 엔진은 인덱스 트리를 순회하면서 조건에 맞는 모든 행을 찾아야 하므로, 비교적 더 많은 자원을 소비합니다.

✔️ 발생

주로 인덱스의 선택도가 낮을 때검색 조건이 인덱스의 첫 번째 열이 아닐 때 발생할 수 있습니다.


인덱스 시크(Index Seek)

인덱스 시크는 인덱스의 특정 지점에서 검색을 시작하여 검색 조건에 맞는 행을 찾는 방식입니다.

✔️ 사용

주로 검색 조건에 맞는 행이 상대적으로 적을 때 사용됩니다.

✔️ 특징

데이터베이스 엔진은 인덱스의 특정 위치에서 검색을 시작하므로, 일반적으로 빠르고 효율적입니다.

✔️ 발생

주로 인덱스의 선택도가 높을 때 발생하며, 검색 조건이 인덱스의 첫 번째 열인 경우에 주로 발생합니다.


인덱스 스캔은 모든 행을 검색해야 하므로 대량의 데이터에 대해서는 더 많은 자원을 소비하지만,

인덱스 시크는 인덱스의 특정 지점에서 검색을 시작하므로 효율적입니다.

그러나 어떤 메커니즘이 실제로 사용되는지는 데이터베이스 엔진의 옵티마이저와 실행 계획에 따라 다르며,

쿼리와 인덱스 구조에 따라 달라집니다.

최적의 성능을 얻기 위해서는 인덱스를 적절하게 설계하고,

쿼리를 튜닝하여 쿼리 옵티마이저가 최적의 실행 계획을 선택할 수 있도록 하는 것이 중요합니다.

출처 | ChatGPT

728x90
반응형