0
我有這樣的問題:PostgreSQL的鏈接的服務器查詢很慢
進行查詢在鏈接服務器以PostgreSQL是非常緩慢的,非常,非常慢,例如:
,如果我在pgAdmin的運行此查詢:
select max(oldmedicionid) from tl.tlinputtable
它返回的最大結果只是:246毫秒
但是,如果我運行了鏈接服務器(使用SQLSERVER 2008年),我創建使用ODBC到postgr的DBLINK ESQL,所以如果我運行此:
select MAX(oldmedicionid) from LINKPDATL.PDATL.tl.tlinputtable
查詢給我造成1分鐘或有時更多...
可能是什麼我problema?我想是不是我的PostgreSQL數據庫,是像dblink的東西很慢,
我該如何提高性能?
當你運行'SELECT max_oldmedicionid FROM OPENQUERY(LINKPDATL,'從PDATL.tl.tlinputtable''選擇max(oldmedicionid)max_oldmedicionid)會發生什麼? –
用這種方式完美工作,爲什麼只用openquery工作得很快? –
正如@ RobinsTharakan的回答所示,聚合可能由SQL Server執行。這意味着在PostgreSQL服務器上運行的查詢本質上是'SELECT oldmedicionid FROM tl.tlinputtable',然後整個結果集被髮送到MS SQL Server,並且MS SQL Server正在進行聚合。這只是對SQL Server或PostgreSQL提供程序的優化而已。 'OPENQUERY()'可以讓你精確控制查詢的用途。 –