Это моя проблема. Я определил связанный сервер, назовем его LINKSERV, который имеет базу данных под названием LINKDB. На моем сервере (MYSERV) У меня есть база данных MYDB.Одиночный SELECT со связанным сервером делает несколько SELECT по ID
Я хочу выполнить запрос ниже.
SELECT *
FROM LINKSERV.LINKDB.LINKSCHEMA.LINKTABLE
INNER JOIN MYSERV.MYDB.MYSCHEMA.MYTABLE ON MYKEYFIELD = LINKKEYFIELD
Проблема заключается в том, что, если я взгляну на профилировщик, я вижу, что в LINKSERV сервера много отборных сделано. Они выглядит аналогично:
SELECT *
FROM LINKTABLE WHERE LINKKEYFIELD = @1
Где @1
это параметр, который изменяется для каждого ВЫБРАТЬ. Это, конечно, нежелательно, потому что оно, кажется, не работает. Я мог ошибаться, но я полагаю, что проблема связана с использованием разных серверов в JOIN. На самом деле, если я избегу этого, проблема исчезнет.
Я прав? Есть ли решение? Заранее спасибо.
Это называется параметризованным запросом, и он должен работать достаточно хорошо. Пожалуйста, выполните поиск по этому термину. Может быть, вы должны добавить индекс в LINKTABLE.LINKKEYFIELD – Hogan
Это не связано с параметризованными запросами. Запросы по связанным серверам должны вести себя по-разному. Кстати, о какой версии SQL Server мы говорим? –
** MYSERV ** - SQL2008R2, а ** LINKSERV ** - SQL2008. – ufo