PostgreSQL LIKE 쿼리: 성능 병목 현상 및 최적화 전략
계산 집약도로 유명한 PostgreSQL의 LIKE
쿼리는 특정 데이터베이스 테이블에 대해 일관되지 않은 성능을 보여주었습니다. 일부 쿼리는 200~400밀리초 내에 완료되지만 다른 쿼리는 최대 30초가 소요됩니다.
표준 색인생성 제한
owner1
필드에서 B-트리 인덱스를 사용한 초기 시도는 성능 향상에 실패했습니다. 다양한 LIKE
구문 변형을 사용한 실험에서도 유의미한 결과가 나오지 않았습니다.
트라이그램 인덱스: 우수한 솔루션
pg_trgm
확장은 LIKE
및 ILIKE
작업, 특히 긴 문자열의 경우 상당한 성능 향상을 제공하는 트라이그램 인덱스(GIN/GiST)를 제공합니다. 중요한 점은 이 색인이 3자보다 짧은 단어도 지원한다는 것입니다.
접두사 일치 최적화
와일드카드 없이 검색하려면 다음 대안을 고려하세요.
^@
연산자/starts_with()
함수(PostgreSQL 11 ): PostgreSQL 11에 도입된 ^@
연산자와 starts_with()
함수는 SP-GiST 인덱스와 함께 사용할 때 효율적인 접두사 일치를 제공합니다. .COLLATE "C"
: COLLATE "C"
을 사용하여 생성된 인덱스는 text_pattern_ops
연산자 클래스와 유사하게 동작하므로 B-트리 인덱스와의 최적화된 접두사 일치가 가능합니다.text_pattern_ops
연산자 클래스: 이 연산자 클래스는 왼쪽 고정 패턴(선행 와일드카드 없음)을 위해 특별히 설계된 B-트리 인덱스를 생성합니다.추가 자료
PostgreSQL의 패턴 일치에 대한 자세한 내용은 다음 리소스를 참조하세요.
위 내용은 내 PostgreSQL LIKE 쿼리가 왜 이렇게 느린가요? 속도를 어떻게 높일 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!