Как увеличить скорость выполнения запросов между базами данных в SQL - PullRequest
0 голосов
/ 07 ноября 2019

Я использую этот запрос к базе данных, как показано ниже, но он работает очень медленно. Есть ли другой способ ускорить выполнение этого запроса?

update [CCAVENUE].[dbo].[ARInvoice] 
set Post_Flag = 'Y',
    sap_docentry = (select DocEntry 
                    from [SAPCCAVENU].[dbo].[oinv] 
                    where U_Invoice_No = Invoice_no SQL_Latin1_General_CP850_CI_AS)

Ответы [ 3 ]

0 голосов
/ 07 ноября 2019

Если обе таблицы являются только одним и тем же сервером, вы можете попробовать ниже

UPDATE AR
SET AR.Post_Flag='Y',
    AR.sap_docentry = OI.DocEntry
FROM [CCAVENUE].[dbo].[ARInvoice] AR
INNER JOIN [SAPCCAVENU].[dbo].[oinv] OI 
    ON U_Invoice_No=Invoice_no collate SQL_Latin1_General_CP850_CI_AS

Если обе таблицы находятся на разных серверах базы данных, вам следует попробовать ниже

SELECT DISTINCT U_Invoice_No, DocEntry INTO #tmp_oinv FROM [SAPCCAVENU].[dbo].[oinv]

UPDATE AR
SET AR.Post_Flag='Y',
    AR.sap_docentry = OI.DocEntry
FROM [CCAVENUE].[dbo].[ARInvoice] AR
INNER JOIN #tmp_oinv OI 
    ON U_Invoice_No=Invoice_no collate SQL_Latin1_General_CP850_CI_AS
0 голосов
/ 07 ноября 2019
;WITH t2 AS
(
   select DocEntry 
   from [SAPCCAVENU].[dbo].[oinv] 
   where U_Invoice_No = Invoice_no SQL_Latin1_General_CP850_CI_AS
)    
UPDATE t1
  SET t1.Post_Flag = 'Y',
  t1.sap_docentry=t2.DocEntry
  FROM [CCAVENUE].[dbo].[ARInvoice]  AS t1
  JOIN t2
  ON U_Invoice_No=Invoice_no;

Примечание:

Попробуйте этот запрос. Здесь я обновляю данные, используя CTE, то есть Common Table Expression.

0 голосов
/ 07 ноября 2019

Попробуйте запрос ниже.

UPDATE [CCAVENUE].[dbo].[ARInvoice] SET Post_Flag='Y', sap_docentry=DocEntry
    FROM [CCAVENUE].[dbo].[ARInvoice]
    JOIN [SAPCCAVENU].[dbo].[oinv] ON U_Invoice_No=Invoice_no
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...