我想建立一個基本上做兩件事的視圖,表1中的記錄是否在表2中以及是否有到另一個表的鏈接仍然存在。它處理數據的一個子集,但是當我試圖運行完整查詢時,它在視圖設計器中超時。SQL查看優化
該視圖工作正常,直到我在檢查中添加到另一個表的鏈接是否存在。
最初,它連接表A至表B和過濾掉其中A.ID ID列表B中wasnt本
我然後告知,如果人與地址表之間的鏈接(存儲在表C)被刪除,那麼除了再次獲得該表的完整摘錄並查看哪些鏈接不再存在之外,我們無法知道。我試圖使用檢查,以確定
我用以下結構接近60倍選擇是否在列中顯示的信息是否在特定的列中顯示的一些數據:
Column1 = case when exists (select LinkID from LinkTable C
where cast(C.LinkAddressID as varchar) = A.AddressID
and cast(C.LinkID as varchar) = A.ID)
then Column1
else NULL
end
有表A中大約有1.6m的記錄在鏈表中僅有超過4m的記錄。
有沒有更好的方法來編寫這個查詢/視圖,將更加優化?
請讓我知道是否需要
定義varchar數據類型時,應始終指定大小。沒有更多的細節在這裏很難知道發生了什麼,但它似乎可能是一個左連接到LinkTable會更好。在我們真正幫助之前,您需要提供更多信息。查詢的一小部分不足以提升性能。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
請提供實際的執行計劃和查詢 – Devart
另外您的查詢不可SARGABLE,它可能最終會做掃描 – TheGameiswar