為了提高超慢查詢的速度(如果有關系,在SQL Server 2008上的兩個表中,每個表只有約50,000行,每分鐘要花幾分鐘),我將問題縮小到OR內部聯接中,例如:SELECT mt.ID, mt.ParentID, ot.MasterID FROM dbo.MainTable AS mt INNER JOIN dbo.OtherTable AS ot ON ot.ParentID = mt.ID OR ot.ID = mt.ParentID我將其更改為(希望是)一對等效的左聯接,如下所示:SELECT mt.ID, mt.ParentID, CASE WHEN ot1.MasterID IS NOT NULL THEN ot1.MasterID ELSE ot2.MasterID END AS MasterID FROM dbo.MainTable AS mt LEFT JOIN dbo.OtherTable AS ot1 ON ot1.ParentID = mt.ID LEFT JOIN dbo.OtherTable AS ot2 ON ot2.ID = mt.ParentID WHERE ot1.MasterID IS NOT NULL OR ot2.MasterID IS NOT NULL..并且查詢現在運行大約一秒鐘!將聯接置于OR聯接條件通常不是一個好主意嗎?還是我只是不幸地布置了桌子?
在INNER JOIN條件下使用“ OR”是個壞主意嗎?
江戶川亂折騰
2019-10-08 15:52:51