2010-02-09 3 views
0

전용 서버에 PostgreSQL의 데이터베이스를 설계하고 있습니다. 특정 복잡한 쿼리를 자주 실행하고 MS-Access 또는보고 소프트웨어와 같은 ODBC/JDBC 클라이언트에서 결과에 액세스 할 수 있기를 바랍니다. 내가보기로vs ODBC 쿼리

, 나는 PostgreSQL을 내보기를 정의하고 ODBC를 사용하여 가져 오거나 기본 테이블을 ODBC 클라이언트에서 쿼리를 정의하고 가져올 수 중 하나를 선택할 수 있습니다.

어느 것이 가장 좋습니까? 누락 된 다른 옵션이 있습니까?

답변

1

"가져 오기"란 무엇을 의미하는지 모르겠습니다. 뷰는 본질적으로 테이블에서와 같이 데이터를 선택할 수있는 사전 정의 된 쿼리입니다. SELECT 쿼리를 실행할 때 데이터 테이블에 직접 액세스하거나 뷰를 통해 쿼리에 대한 결과 만 사용자에게 다시 전송됩니다. 다양한 다른 클라이언트에서 같은 쿼리를 실행해야하는 경우

는 그 쿼리에 대한 뷰를 정의하는 것이 좋습니다 수 있습니다.

공유하고 즐기십시오.

+0

해당 문제를 해결해 주셔서 감사합니다. 실제로 ODBC 클라이언트의 경우 추가 '가져 오기'가 없습니다. 두 경우간에 SQL 최적화에 차이가있을 것이라고 생각하십니까? – thomaspaulb

+0

아니요, PostgreSQL에서는 뷰가 쿼리를 대체하기 때문에 개별 구문과 같은 방식으로 최적화됩니다. 쿼리가 파싱 오버 헤드를 측정 할 수있을 정도로 길면 효과가있을 수 있지만 쿼리가 * complex * 인 경우에는 그렇지 않습니다. 일반적으로 쿼리가 동일하면 측정 가능한 성능 차이는 기대하지 않습니다. –

1

보고 목적으로 사용하려는 출력을 만드는 복잡한 쿼리가 있다고 가정 해보십시오. 당신이 설명하는대로

롤업는, 집계 등 거의 동일한 방식으로 수행하고 데이터웨어 하우스에 저장됩니다.

원하는 경우 쿼리의 출력을 저장하는 테이블을 고려해야합니다. 스케줄링 프로그램을 사용하여 적절한 시간에 ComplexQuery를 실행하고 출력을 테이블에 저장하십시오.

이유를 결정해야합니다. 쿼리의 복잡성은 데이터베이스 서버가 쿼리를 실행하는 데 필요한 리소스의 양만큼 중요하지 않습니다. 이것이 충분히 작고 성능에 부정적인 영향을 미치지 않으며 데이터를 실시간으로 필요로하는 경우보기를 사용하십시오. 신속하게 사용할 수 있고 서버에 높은 부하를주지 않는 주기적으로 새로 고쳐진 데이터로 작업 할 수있는 경우 집계 테이블로 이동하십시오.

+0

고마워, 나는 '집계 테이블'과 같은 개념이 존재할 것이라고 생각했지만, 그럴 줄을 몰랐다. – thomaspaulb

+0

PostgreSQL 개념보다 데이터웨어 하우징 개념입니다. –

+0

PostgreSQL에서 데이터웨어 하우스를 만들 수 없습니까? – thomaspaulb