DATABASE
에서 나는 정규화 된 포스트 그레스 9.1 데이터베이스를 가지고 있고 그것에서 나는 일부 기능을 작성했습니다. 특히 "fn_SuperQuery"(param,param, ...)"
함수 중 하나는 SET OF RECORD
을 반환하며 뷰 (매개 변수를 허용)로 생각해야합니다. 이 함수는 큰 데이터 세트로 성능을 얻기 위해 자체 결과를 계산하는 동안 실제로 여러 임시 테이블을 작성하기 때문에 많은 오버 헤드가 있습니다.액세스 PostgreSQL의 9.1 임시 테이블 PHP/AJAX
참고로이 쿼리에는 WITH
(cte 's)만을 사용했지만 더 효율적인 조인을 위해 일부 열에 인덱스를 추가 할 수있는 기능이 필요했습니다.
PHP
나는 데이터베이스에 연결하는 쿼리를 실행하고, JSON으로 결과를 반환 엄격하게 PHP를 사용합니다. 각 쿼리는 연결 문자열로 시작한 다음 pg_close
을 호출하여 끝납니다. 나는 결과를 PHP 파일을 호출하고 받아들이는 jQuery의 .ajax
기능을 사용하고
FRONTEND.
"fn_SuperQuery"(param,param, ...)"
실제로 여러 다른 쿼리에 대한 기초입니다 :
내 문제는 이것이다. 이 응용 프로그램에는 최종 사용자에게 필요한 모든 정보를 생성하기 위해 여러 쿼리를 한 번에 실행해야하는 부분이 있습니다. 이러한 쿼리 중 많은 부분이 "fn_SuperQuery"(param,param, ...)"
의 출력에 의존합니다.이 쿼리를 실행하는 오버 헤드가 매우 가파르고 동일한 매개 변수가 주어지면 동일한 데이터를 반환한다는 사실 때문에 사용자가 실행을 기다리게하는 것이 바보 같다고 생각합니다 두번.
내가하고 싶은 일은 "fn_SuperQuery"(param,param, ...)"
의 결과를 임시 테이블에 반환 한 다음 데이터가 필요한 다른 쿼리를 실행 한 다음 임시 테이블을 삭제하는 것입니다.
그 점을 이해하십시오. PostgreSQL ... requires each session to issue its own CREATE TEMPORARY TABLE command for each temporary table to be used. 두 개의 PHP 파일을 동일한 데이터베이스 세션에 연결할 수 있다면 둘 다 임시 테이블을 볼 수 있어야합니다.
어떻게해야합니까? ... 아니면 아직 고려해야 할 다른 접근 방법일까요?
"정상적인"테이블에 넣는 것은 옵션이 아닌 비정규 화일 수 있습니다. 구체화 된보기를 살펴볼 것입니다. 그러나 당분간 9.1로 제한됩니다. – losthorse
나는 새로운 테이블을 만들고, 그것을 사용하고, 버리는 것을 의미했다. 임시 테이블처럼. – alexius