> 데이터 베이스 > MySQL 튜토리얼 > 내 PostgreSQL LIKE 쿼리가 왜 이렇게 느린가요? 속도를 어떻게 높일 수 있나요?

내 PostgreSQL LIKE 쿼리가 왜 이렇게 느린가요? 속도를 어떻게 높일 수 있나요?

Susan Sarandon
풀어 주다: 2025-01-23 03:46:10
원래의
1031명이 탐색했습니다.

Why Are My PostgreSQL LIKE Queries So Slow, and How Can I Speed Them Up?

PostgreSQL LIKE 쿼리: 성능 병목 현상 및 최적화 전략

계산 집약도로 유명한 PostgreSQL의 LIKE 쿼리는 특정 데이터베이스 테이블에 대해 일관되지 않은 성능을 보여주었습니다. 일부 쿼리는 200~400밀리초 내에 완료되지만 다른 쿼리는 최대 30초가 소요됩니다.

표준 색인생성 제한

owner1 필드에서 B-트리 인덱스를 사용한 초기 시도는 성능 향상에 실패했습니다. 다양한 LIKE 구문 변형을 사용한 실험에서도 유의미한 결과가 나오지 않았습니다.

트라이그램 인덱스: 우수한 솔루션

pg_trgm 확장은 LIKEILIKE 작업, 특히 긴 문자열의 경우 상당한 성능 향상을 제공하는 트라이그램 인덱스(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의 패턴 일치에 대한 자세한 내용은 다음 리소스를 참조하세요.

  • LIKE, SIMILAR TO 또는 정규 표현식과 일치하는 패턴
  • LIKE는 어떻게 구현되나요?
  • PostgreSQL에서 유사 문자열을 효율적으로 찾는 방법

위 내용은 내 PostgreSQL LIKE 쿼리가 왜 이렇게 느린가요? 속도를 어떻게 높일 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿