我正在專門的服務器上設計PostgreSQL中的數據庫。我希望經常運行某些複雜的查詢,並使用ODBC/JDBC客戶端(如MS-Access或報告軟件)訪問結果。查看與ODBC查詢
正如我所看到的,我可以選擇在PostgreSQL中定義VIEW並使用ODBC導入它,或者在ODBC客戶端中定義查詢並導入基礎表。
哪個最好? 有沒有其他的選擇,我錯過了?
我正在專門的服務器上設計PostgreSQL中的數據庫。我希望經常運行某些複雜的查詢,並使用ODBC/JDBC客戶端(如MS-Access或報告軟件)訪問結果。查看與ODBC查詢
正如我所看到的,我可以選擇在PostgreSQL中定義VIEW並使用ODBC導入它,或者在ODBC客戶端中定義查詢並導入基礎表。
哪個最好? 有沒有其他的選擇,我錯過了?
我不確定「import」是什麼意思。視圖本質上是一個預定義的查詢,您可以像從表中那樣選擇數據。當您執行SELECT查詢時,無論您是直接訪問數據表還是通過視圖訪問數據表,只會將查詢結果發回給您。
如果您必須從各種不同的客戶端執行相同的查詢,爲該查詢定義視圖可能是一個好主意。
分享和享受。
你說你有複雜的查詢來創建你想用於報告目的的輸出。
彙總,彙總等操作將以與您描述的幾乎相同的方式執行並存儲在數據倉庫中。
如果這是你想要的,你應該考慮有一個存儲查詢輸出的表。使用計劃程序在適當的時候運行ComplexQuery並將輸出存儲在表中。
你必須決定你爲什麼要這樣做。查詢的複雜性不像數據庫服務器運行查詢所需的資源量那麼多。如果這足夠小並且不會對性能產生負面影響,並且實時需要數據,請使用View。如果您可以使用定期刷新的數據,並且可以快速使用,並且不會對服務器造成高負載,那麼請轉到聚合表。
謝謝,我想像'聚合表'的概念將存在,但我不知道它的確如此。 – thomaspaulb 2010-02-09 02:37:19
與PostgreSQL概念相比,它更像是一個數據倉庫概念。 – 2010-02-09 02:45:26
是否有可能在PostgreSQL中創建數據倉庫? – thomaspaulb 2010-02-09 02:47:14
感謝您的清除..確實沒有額外的'導入'ODBC客戶端的情況下。你認爲這兩種情況之間的SQL優化可能有所不同嗎? – thomaspaulb 2010-02-09 02:34:58
不,在PostgreSQL中,視圖只是替換查詢,所以它將以與單個語句相同的方式進行優化。如果查詢足夠長以致解析開銷可測量,則可能會產生影響 - 但如果查詢爲* complex *,則情況不會如此。一般來說,只要查詢是相同的,就不會有可測量的性能差異。 – 2010-02-09 11:16:13