none
SQL Server 2008以上系統帶條件的Cross Join與Inner Join運作有不一樣? RRS feed

  • 問題

  • 在A, B兩個不同的table中有一個共通欄位,我叫他"CustomerID"好了

    現在我用以下語法來進行Query

    • select A.CustomerID, A.Name, B.TxnName, B.CreateDate
    • from A, B
    • where A.CustomerID = B.CustomerID

    這SQL在一般應該是跟Inner Join沒有差別的。但最近有人說這會先做Cross Join,如果我A表有兩筆,B表有3筆,那這會讓DB先找出6種組合後,才過濾出其中兩筆符合A.CustomerID = B.CustomerID的資料。一定要寫成下方的語法,SQL Server才會只單純找出兩筆

    • select A.CustomerID, A.Name, B.TxnName, B.CreateDate
    • from A inner join B
    • on A.CustomerID = B.CustomerID

    真的假的?我怎麼按Execution Plan解釋時,根本看不出這兩條語法有任何運作成本差異?

    這種樣子難以說服我,所以請問各位誰能為我解惑?


    • 已編輯 SK-Doggy 2019年1月28日 上午 03:26 主題意思稍不夠精準
    2019年1月27日 下午 05:02

所有回覆

  • 觀察執行計畫都沒有差異了,不懷疑一下看的資料解釋是錯誤的,能否提供連結來看看
    • 已編輯 TerryTsai 2019年1月28日 上午 03:02
    2019年1月28日 上午 03:02
  • 目前沒有,因為這是對方口頭訴說的

    現在因對方職等更高,其他人反而單純聽信對方,造成我要找出官方說明之類證明自己論訴

    2019年1月28日 上午 03:25