찾다

 >  Q&A  >  본문

Postgres가 지정된 인덱스를 사용하도록 강제하는 방법은 무엇입니까?

<p>Postgres가 순차 스캔 수행을 요구할 때 인덱스를 사용하도록 하려면 어떻게 해야 합니까? </p>
P粉785905797P粉785905797465일 전668

모든 응답(1)나는 대답할 것이다

  • P粉281089485

    P粉2810894852023-08-21 18:52:40

    많은 데이터베이스에서 흔히 사용되는 "인덱스 힌트" 기능에 대해 문의하신다고 가정하면 PostgreSQL에서는 이러한 기능을 제공하지 않습니다. 이는 PostgreSQL 팀이 의도적으로 내린 결정입니다. 이유와 수행할 수 있는 작업에 대한 좋은 개요는 여기에서 확인할 수 있습니다. 기본적인 이유는 이는 데이터가 변경될 때 더 많은 문제를 일으키는 경향이 있는 성능 최적화 방법이며, PostgreSQL의 최적화 프로그램이 통계를 기반으로 계획을 재평가할 수 있기 때문입니다. 즉, 현재 좋은 쿼리 계획이 항상 좋은 쿼리 계획이 아닐 수도 있으며 인덱스 힌트는 특정 쿼리 계획을 사용하도록 강제합니다.

    매우 조잡한 테스트 도구로 enable_seqscanenable_indexscan 매개변수를 사용할 수 있습니다. 참조:

    는 지속적인 생산 용도로 사용되지 않습니다 . 쿼리 계획 선택에 문제가 있는 경우 쿼리 성능 문제 추적에 대한 문서를 검토해야 합니다. enable_ 매개변수만 설정하고 떠나지 마세요.

    인덱스를 사용해야 할 타당한 이유가 없다면 Postgres는 아마도 올바른 선택을 할 것입니다. 왜?

    • 작은 테이블의 경우 순차 스캔이 더 빠릅니다.
    • Postgres는 데이터 유형이 일치하지 않는 경우 인덱스를 사용하지 않으므로 적절한 변환을 포함해야 할 수도 있습니다.
    • 계획 설정으로 인해 문제가 발생할 수 있습니다.

    또한 이 오래된 뉴스그룹 게시물을 참조하세요.

    회신하다
    0
  • 취소회신하다