> 데이터 베이스 > MySQL 튜토리얼 > 더 빠른 쿼리를 위해 PostgreSQL에서 계산 열을 효율적으로 생성하려면 어떻게 해야 합니까?

더 빠른 쿼리를 위해 PostgreSQL에서 계산 열을 효율적으로 생성하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2025-01-11 18:41:41
원래의
812명이 탐색했습니다.

How Can I Efficiently Generate Computed Columns in PostgreSQL for Faster Queries?

계산 열을 사용하여 PostgreSQL 쿼리 최적화

여러 테이블의 파생 값에 자주 액세스하는 쿼리의 경우 대상 테이블 내에 계산 열을 생성하면 성능이 크게 향상됩니다. PostgreSQL은 이를 달성하기 위한 여러 가지 방법을 제공합니다.

뷰는 쿼리를 논리적으로 표현하지만 물리적으로 데이터를 저장하지 않기 때문에 성능이 중요한 시나리오에는 적합하지 않습니다.

우수한 솔루션은 PostgreSQL의 "생성 열"(버전 11부터 사용 가능)입니다. STORED 생성된 열은 계산된 값을 테이블 내에 직접 저장하여 기존 열과 동일한 성능을 제공합니다.

이전 PostgreSQL 버전이나 가상 생성 열이 적합하지 않은 상황에서는 함수를 사용하여 계산 열을 시뮬레이션할 수 있습니다. 이러한 함수는 테이블 유형을 입력으로 받아들이고 계산된 값을 반환하여 사실상 의사 열 역할을 합니다.

예를 들어 설명하겠습니다.

<code class="language-sql">CREATE TABLE tbl_a (a_id int, col1 int, col2 int);
INSERT INTO tbl_a VALUES (1,1,1), (2,2,2), (3,3,3), (4,4,4);

CREATE TABLE tbl_b (b_id int, a_id int, colx int);
INSERT INTO tbl_b VALUES
  (1,1,5),  (2,1,5),  (3,1,1)
, (4,2,8),  (5,2,8),  (6,2,6)
, (7,3,11), (8,3,11), (9,3,11);</code>
로그인 후 복사

함수를 사용하여 의사 열 col3을 생성하려면:

<code class="language-sql">CREATE FUNCTION col3(tbl_a)
  RETURNS int8
  LANGUAGE sql STABLE AS
$func$
SELECT sum(colx)
FROM   tbl_b b
WHERE  b.a_id = .a_id
$func$;</code>
로그인 후 복사

속성 표기법(tbl_a.col3) 또는 함수 표기법(col3(tbl_a))을 사용하여 계산된 값에 액세스하여 쿼리 유연성을 제공합니다. 이름 충돌을 방지하려면 테이블 별칭을 사용하는 것을 잊지 마세요.

계산 열 또는 생성된 함수를 사용하면 하위 쿼리가 최소화되고 데이터 검색이 간소화되며 쿼리 속도가 크게 향상됩니다. 가장 좋은 접근 방식은 특정 요구 사항과 PostgreSQL 버전에 따라 다릅니다. 세심한 배려가 효율적인 데이터베이스 설계를 보장합니다.

위 내용은 더 빠른 쿼리를 위해 PostgreSQL에서 계산 열을 효율적으로 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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