Производительность является медленным, при выполнении запроса в SQL Server 2005, обновляет таблицу на связанном сервере и затем соединяет таблицы в таблицу на локальном сервере
Имеется запрос, который обновляет таблицу на связанном сервере и затем соединяет таблицы в таблицу на локальном сервере.
Локальный сервер работает под управлением Microsoft SQL Server 2005.
На локальном сервере выполните запрос в SQL Server 2005.
В этом случае производительность является медленным по сравнению с производительностью одного и того же запроса в Microsoft SQL Server 2000. Например при выполнении запроса в SQL Server 2000 запроса занимает меньше 1 секунды до конца. Тем не менее при выполнении запроса в SQL Server 2005, запрос занимает около 24 секунд для завершения.
Запрос выполняет операцию удаленного сканирования в таблице на связанном сервере. При выполнении запроса в SQL Server 2005 операции удаленного сканирования извлекает все строки в таблице. Если таблица содержит много строк, операции удаленного сканирования занимает много времени.
Тем не менее при выполнении запроса в SQL Server 2000, операция Remote Query отправляет запрос на связанном сервере. Таким образом даже если таблица содержит много строк, операции удаленного сканирования будет завершена за короткое время.
Чтобы обойти эту проблему, добавьте ограничения UNIQUE или ограничений PRIMARY KEY в таблицу на локальном сервере. Добавьте ограничение для столбца, который используется для операции JOIN.
Например обновления инструкции DECLARE, описанного в действии 4 раздела "Дополнительные сведения" следующее:
Примечание.Следующие действия предполагают наличие двух серверов, работающих под управлением SQL Server 2005. Один экземпляр называется ServerA\SQL2005. Имя экземпляра является ServerB\SQL2005.
Сервер_а экземпляра SQL Server 2005 выполните следующие инструкции для создания базы данных в SQL Server Management Studio.
USE MASTER
GO
IF EXISTS (SELECT * FROM sysdatabases where name = 'LinktestTarget')
DROP DATABASE LinktestTarget
GO
CREATE DATABASE LinktestTarget
GO
ALTER DATABASE LinktestTarget MODIFY FILE
(NAME = 'LinktestTarget', SIZE = 200MB)
GO
ALTER DATABASE LinktestTarget MODIFY FILE
(NAME = 'LinktestTarget_log', SIZE = 100MB)
GO
ServerB экземпляра SQL Server 2005 выполните следующие инструкции для создания связанного сервера в среде Management Studio.
Сервер_а экземпляра SQL Server 2005 выполните следующую инструкцию, чтобы создать таблицу и заполнить таблицу с 50 000 строк данных:
USE LinktestTarget
GO
CREATE TABLE [T1] (
[c1] [int] NOT NULL,
[c2] [int] NOT NULL,
[c3] char (4000) NOT NULL,
CONSTRAINT [PK_t1] PRIMARY KEY CLUSTERED ([c1])
WITH FILLFACTOR = 80 ON [PRIMARY]
) ON [PRIMARY]
GO
SET NOCOUNT ON
GO
DECLARE @counter int
SET @counter = 1
WHILE @counter < 50000
BEGIN
INSERT INTO T1 (c1, c2, c3) VALUES (@counter, @counter,'')
SET @counter = @counter + 1
END
GO
UPDATE STATISTICS T1 (PK_t1) WITH FULLSCAN
ServerB экземпляра SQL Server 2005 выполните следующие инструкции. Обратите внимание, что производительность медленно.
DECLARE @t2 table (c1 int, c2 int)
INSERT INTO @t2 (c1, c2) VALUES (399990, 399990)
UPDATE A
SET A.c2 = B.c2
FROM LS.LinktestTarget.dbo.T1 AS A
JOIN @t2 as B on B.c1 = A.c1
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Спасибо! Благодаря вашему отзыву мы сможем сделать справочные материалы еще лучше. Чтобы воспользоваться дополнительными возможностями поддержки, посетите домашнюю страницу центра справки и поддержки.