Как оптимизировать простой связанный запрос выбора сервера? - PullRequest
2 голосов
/ 16 марта 2010

У меня есть таблица с именем Таблица со столбцами:

  • ID (int, первичный ключ, кластеризованный, уникальный индекс)
  • ТЕКСТ (варчар 15)

на связанном сервере MSSQL с именем LS . Связанный сервер находится на том же сервере. И:

Когда я звоню:

SELECT ID, TEXT FROM OPENQUERY(LS, 'SELECT ID, TEXT FROM Table')

Требуется 400 мс .

Когда я звоню:

SELECT ID, TEXT FROM LS.dbo.Table

Требуется 200 мс

И когда я вызываю запрос напрямую, находясь на сервере LS:

SELECT ID, TEXT FROM dbo.Table

Требуется 100 мс .

Во многих местах я читал, что OPENQUERY быстрее, но в этом простом случае это не работает Что я могу сделать, чтобы сделать этот запрос быстрее, когда я вызываю его с другого сервера, а не напрямую с LS?

1 Ответ

1 голос
/ 21 марта 2010

Как насчет SELECT ID, TEXT FROM OPENQUERY(LS, 'SELECT ID, TEXT FROM dbo.Table'), чтобы сделать запросы эквивалентными с использованием схемы?

В любом случае, прочитайте эту статью из Linchi Shea о связанных серверах

Примечание: aвызов связанного сервера всегда будет медленнее, чем прямой вызов.От SQL Server к вашей SSMS теперь сначала проходит другой экземпляр SQL Server, поэтому, конечно, он будет медленнее.

...