본문 바로가기
SQL

(oracle)테이블에서 PK가 아닌 다른 컬럼을 INDEX로 추가하면 속도가 빨라질까? (+오버헤드란?)

by Status Code 2023. 4. 20.

일반적으로, PK (Primary Key)는 인덱스로 자동으로 생성되며, 레코드를 식별하는 데 가장 중요한 역할을 합니다. 그러므로, PK는 데이터를 검색하는 데 매우 중요한 역할을 합니다. 따라서 PK 컬럼에 대한 인덱스는 데이터베이스 성능에 큰 영향을 미칩니다.

그러나, PK 이외의 다른 컬럼도 데이터베이스 성능에 중요한 역할을 합니다. 특히, WHERE 절이나 JOIN 절에 사용되는 컬럼은 인덱스를 생성함으로써 쿼리의 성능을 향상시킬 수 있습니다.

따라서, PK 이외의 다른 컬럼에 대한 인덱스를 생성하면, 쿼리 성능이 개선될 수 있습니다. 그러나, 인덱스를 추가하면 테이블에 더 많은 디스크 공간이 필요하며, 인덱스가 변경될 때마다 인덱스를 업데이트해야 하므로 이로 인해 오버헤드가 발생할 수 있습니다.

또한, 인덱스를 추가하기 전에 쿼리 실행 계획을 분석하여 인덱스를 생성하는 것이 쿼리 성능을 실제로 개선할 수 있는지 확인하는 것이 좋습니다. 이를 위해, 오라클에서는 SQL 튜닝어드바이저를 사용할 수 있으며, 이를 통해 쿼리 성능을 최적화할 수 있습니다.

따라서, PK 이외의 다른 컬럼에 대한 인덱스를 추가하는 것이 항상 성능을 개선시키는 것은 아니며, 상황에 따라 적절한 분석이 필요합니다.

 

 

오버헤드란?

오버헤드(overhead)는 어떤 작업을 수행하기 위해 추가로 필요한 비용이나 시간, 자원 등을 의미합니다. 일반적으로 시스템을 구성하는 여러 요소들 중에서 불필요하게 추가되는 부분을 의미합니다.

컴퓨팅 분야에서는, 예를 들어 함수 호출이나 객체 생성 등과 같은 작업을 수행할 때, 이 작업에 필요한 추가적인 자원, 시간, 비용 등을 오버헤드라고 합니다. 이러한 오버헤드는 전체 시스템의 성능을 저하시키거나, 리소스의 낭비를 초래할 수 있습니다.

데이터베이스에서는, 예를 들어 인덱스를 추가하거나 테이블을 업데이트하는 등의 작업이 수행될 때, 추가적인 자원과 시간이 소요되므로 이러한 작업에 대한 오버헤드가 발생합니다. 이러한 오버헤드는 일반적으로 데이터베이스의 성능을 저하시키며, 따라서 최소한으로 유지해야 합니다.

따라서 시스템을 설계하거나 최적화할 때, 오버헤드를 최소화하고 최적의 성능을 발휘할 수 있도록 해야 합니다. 이를 위해서는 시스템의 구성 요소를 잘 이해하고, 어떤 작업이 어떤 오버헤드를 발생시키는지를 파악하는 것이 중요합니다.

 

 

댓글