자주 사용하는 쿼리를 테이블 열로 저장하시겠습니까?
쿼리:
다음 PostgreSQL 쿼리를 고려해 보세요.
<code class="language-sql">SELECT <col>, <col> , (SELECT sum(<colx>) FROM <othertable> WHERE <otherforeignkeycol> = <thiskeycol>) AS <col> FROM <tbl>;</code>
이 하위 쿼리는 여러 쿼리에서 동일하게 유지됩니다. 레코드 관계를 기반으로 테이블 B의 열 합계를 나타내는 테이블 A의 열을 쉽게 선택할 수 있도록 이 하위 쿼리를 테이블의 의사 열로 저장할 수 있습니까?
정답:
1. 보기
뷰 생성은 필수 하위 쿼리를 해당 열 중 하나로 사용하여 가상 테이블을 정의할 수 있는 효율적인 솔루션입니다.
2. 계산된 필드(저장소 생성 열)
PostgreSQL 11에 도입된 스토리지 생성 열은 귀하의 요구 사항을 충족합니다. 이를 통해 다른 열(하위 쿼리 포함)의 값을 기반으로 동적으로 계산되는 열을 정의할 수 있습니다.
계산된 필드를 사용한 구현:
다음 형식을 고려하세요.
<code class="language-sql">CREATE TABLE tbl_a (a_id int, col1 int, col2 int); CREATE TABLE tbl_b (b_id int, a_id int, colx int);</code>
함수를 사용하여 계산된 필드 만들기:
<code class="language-sql">CREATE FUNCTION col3(a_id INT) RETURNS int8 LANGUAGE sql STABLE AS $func$ SELECT sum(colx) FROM tbl_b b WHERE b.a_id = $func$;</code>
이제 쿼리할 수 있습니다:
<code class="language-sql">SELECT a_id, col1, col2, col3(a_id) FROM tbl_a;</code>
지침:
계산된 필드는 테이블의 현재 행을 기반으로 지정된 열의 값을 제공하여 하위 쿼리를 시뮬레이션합니다. 속성 표기법(예: col3(a_id)
)을 사용하여 계산된 필드에 액세스합니다. 이 기술을 사용하면 계산된 값을 동적으로 검색할 수 있으며 SELECT * 쿼리와의 호환성을 유지할 수 있습니다. 여기에서는 a_id
을 매개변수로 직접 사용하여 함수 정의를 수정하여 레코드 작성을 피하고 쿼리를 단순화했습니다.
위 내용은 PostgreSQL에서 공통 하위 쿼리를 테이블 열로 저장해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!