PostgreSQL에서 HASH
인덱스를 추가하려면, CREATE INDEX
명령을 사용하여 특정 컬럼에 대해 USING HASH
옵션을 지정해야 합니다. 예를 들어, 테이블 my_table
의 my_column
에 대해 해시 인덱스를 추가하려면 아래와 같은 명령어를 사용합니다.
CREATE INDEX my_table_my_column_hash_idx ON my_table USING HASH (my_column);
이 명령어는 my_table
테이블의 my_column
컬럼에 대해 해시 인덱스를 생성합니다.
해시 인덱스는 정확한 값 비교에 최적화되어 있으며, 범위 쿼리에는 적합하지 않습니다. PostgreSQL 10 이상에서 해시 인덱스는 WAL(Write-Ahead Logging)을 지원하여 안정성을 보장하므로, 그 이전 버전에서는 사용에 주의가 필요합니다.
참고: 해시 인덱스는 주로 같은 값의 빠른 검색이 필요한 경우에만 사용하는 것이 좋습니다. 일반적인 상황에서는 B-tree
인덱스가 더 유연하고 성능이 좋은 경우가 많습니다.
PostgreSQL에서 HASH
인덱스를 사용할 때, 내부적으로 이미 지정된 해시 함수가 자동으로 사용됩니다. 이 해시 함수는 데이터 유형에 따라 미리 정의되어 있으며, 사용자가 직접 해시 함수를 설정할 수는 없습니다.
PostgreSQL은 다양한 데이터 타입에 대해 자체 해시 함수를 제공하며, 인덱스를 생성할 때 해당 컬럼의 데이터 타입에 맞는 해시 함수가 자동으로 선택됩니다. 예를 들어, INTEGER
나 TEXT
와 같은 기본 데이터 타입에는 PostgreSQL이 적합한 해시 알고리즘을 적용하여 해시 인덱스를 관리합니다.
따라서, 사용자가 해시 인덱스를 생성할 때 추가적인 해시 함수 설정은 필요하지 않고, PostgreSQL이 이를 자동으로 처리합니다.
이는 B-tree
인덱스와 유사하게 PostgreSQL이 데이터 타입에 맞는 최적의 방식을 자동으로 적용하는 것과 같은 원리입니다.