SELECT i.ClientId --,p.*
FROM dbo.V_WMS_Inventory AS i
inner JOIN
(
SELECT prod.Id
FROM dbo.T_WMS_Product AS prod with(nolock) inner JOIN
dbo.T_CMN_Client AS c with(nolock) ON prod.ClientID = c.Id LEFT OUTER JOIN
dbo.T_WMS_Product_Category AS pc with(nolock) ON pc.Category = prod.ProdCategory
)p
ON i.ProductId = p.Id
--i 后加 with(nolock) 試試
SELECT i.ClientId --,p.*
FROM dbo.V_WMS_Inventory AS i WITH(NOLOCK)
INNER JOIN
(
SELECT prod.Id
FROM dbo.T_WMS_Product AS prod with(nolock) inner JOIN
dbo.T_CMN_Client AS c with(nolock) ON prod.ClientID = c.Id LEFT OUTER JOIN
dbo.T_WMS_Product_Category AS pc with(nolock) ON pc.Category = prod.ProdCategory
) AS p
ON i.ProductId = p.Id
先試試 select count(*) 是否能出來,能的話數據是多少
你的 I 是視圖吧? 看名稱是 V 打頭的,如果是的話,建議你看執行計划,猜測是一個復雜的執行計划,並不是你給出的語句這么簡單的一個查詢
你可以嘗試把你的子查詢加個 DISTINCT 試試
SELECT DISTINCT prod.id
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。