Openquery работает намного быстрее, чем запрос прямо к связанной таблице - PullRequest
6 голосов
/ 29 мая 2009

Попытка выяснить, почему существует такая значительная разница между

select * from linkedserver..tablename

и

select * from openquery(linkedserver, select * from tablename).

4 минуты против 13 секунд.

Ответы [ 3 ]

3 голосов
/ 12 мая 2010

OPENQUERY подключается к целевому серверу, выполняет запрос на этом сервере и возвращает набор результатов. Принимая во внимание, что я считаю, что запрос на связанный сервер выполняется на локальном сервере и выполняется через соединение.

Надеюсь, это поможет.

0 голосов
/ 01 июня 2009

Знаете ли вы, если он пытается подключить распределенную транзакцию через связанный сервер? Если вы посмотрите вывод Trace из Oracle при совершении вызовов, вы сможете увидеть разницу в происходящих запросах. IIRC, стандартный запрос ссылки будет запрашивать информацию схемы из метаданных оракула не так, как вызов OPENQUERY. Я не знаю точно, почему это происходит, но в прошлом у меня была похожая проблема, которая была решена с помощью OPENQUERY.

0 голосов
/ 31 мая 2009

Openquery подключается напрямую к целевому серверу. Несмотря на то, что вы сказали СУРБД, вы не сказали, каким был другой способ связи с данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...