Tôi có nên hoảng hốt trước cảnh báo KHÔNG THAM GIA này không?


20

Tôi đang khắc phục sự cố các bit và phần của quy trình lưu trữ hoạt động kém. Phần này của quy trình đưa ra cảnh báo KHÔNG CÓ THAM GIA

select
    method = 
        case methoddescription 
            when 'blah' then 'Ethylene Oxide'
            when NULL then 'N/A'
            else methoddescription
        end,
    testmethod = 
        case methoddescription 
            when 'blah' then 'Biological Indicators'
            when NULL then 'N/A'
            else 'Dosimeter Reports'
        end,
    result = 
        case when l.res is null or l.res <> 1 then 'Failed'
        else 'Passed'
        end,
    datecomplete = COALESCE(CONVERT(varchar(10), NULL, 101),'N/A')
from db2.dbo.view ls
    join db1.dbo.table l
        on ls.id = l.id
    where item = '19003'
        and l.id = '732820'

Khung nhìn ( [ls]) gọi một máy chủ từ xa (truy vấn từ xa% 41 ở bên phải của gói).

Dưới đây là hình ảnh của kế hoạch:

kế hoạch

Tôi chỉ hỏi câu hỏi này vì bài đăng trên blog này và tôi muốn chắc chắn rằng điều này sẽ không quay lại cắn tôi sau này.

Câu trả lời:


24

Bởi vì chúng ta biết rằng l.id = '732820'ls.id = l.idsau đó SQL Server Xuất phát đóls.id = '732820'

I E

FROM   db2.dbo.VIEW ls
       JOIN db1.dbo.table l
         ON ls.id = l.id
WHERE  l.id = '732820' 

giống như

  ( /*...*/ FROM   db2.dbo.VIEW ls WHERE id = '732820'  )
   CROSS JOIN 
  ( /*...*/  FROM   db1.dbo.table l WHERE id = '732820'  )

Viết lại này không phảixấu cho hiệu suất .

Đạo hàm này là một điều tốt. Nó cho phép SQL Server lọc ra các hàng ... sớm hơn có thể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.