OPENQUERY ve veritabanı bağlantılı sunucular kullanarak verileri bir SQL Server veritabanından diğerine taşımak için tasarlanmış bir dizi programımız vardır.SQL Server DELETE OPENQUERY performansı
Aşağıdaki gibi sorguların, siparişleri beklenenden uzun sürdüğünü fark ettik. Örneğin
DELETE OPENQUERY(server, 'SELECT * FROM table WHERE pkf1 = ''v1'' AND pkf2 = ''v2''')
yukarıdaki gibi tekrar yazılabilir ise:
exec('DELETE * FROM table WHERE pkf1 = ''v1'' and pkf2 = ''v2''') at server
veya
DELETE FROM server.schema.table WHERE pkf1 = 'v1' and pkf2 = 'v2'
performansı OPENQUERY
kullanarak birkaç dakika ile karşılaştırıldığında, sadece birkaç saniyedir.
Birisi, neden OPENQUERY
yaklaşımının karşılaştırmaya göre neden verimsiz olduğunu açıklayabilir mi? Birincil anahtar indekslerini kullanmıyor mu?
içinde çözmek olduğunu https://support.microsoft.com/en-us/kb/309182 – jthalliens
"emirleri beklenenden uzun süre alıyor". Beklentiniz yanlış yönlendirildi. Sanırım yavaş sorgu, silmeden önce kayıtları yerel olarak aktarır ve hızlı olanlar bunu yapmaz. OPENQUERY bir sonuç kümesini yerel olarak döndürür ve diğer yöntemler işe yaramaz. Gerçi sunucuda 'sözdizimi' ile aşina değildi. İlginç. Elbette ki bu işlemlerin sunucuda istemcide olmadığını söyler. –