最佳化重複尋找的資料表連接
兩次連接相同資料表時,通常有兩種方法:使用多個JOIN 子句或合併一個ON 子句中的OR 條件。
多個JOIN 子句(方法1):
如範例所示,此方法涉及為每個符合條件建立單獨的JOIN:
SELECT t1.PhoneNumber1, t1.PhoneNumber2, t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2 FROM Table1 t1 INNER JOIN Table2 t2 ON t2.PhoneNumber = t1.PhoneNumber1 INNER JOIN Table2 t3 ON t3.PhoneNumber = t1.PhoneNumber2
此方法很簡單,並確保結果資料包含所有必需的欄位。
ON 子句中的OR 條件(方法2):
此方法嘗試將JOIN 條件合併為一個來簡化查詢:
SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 = Table2.PhoneNumber OR Table1.PhoneNumber2 = Table2.PhoneNumber
但是,如果以下情況,此方法可能會導致結果集中出現重複行:給定行滿足兩個符合條件。
最佳實務:
首選方法是具有多個 JOIN 子句的 方法 1。它提供了一種更明確、更可靠的方式來根據特定條件連接表,同時避免資料重複。
避免冗餘連線:
透過以下方式避免冗餘連線非常重要:使用適當的別名和命名約定。例如,可以簡化以下查詢:
SELECT t.PhoneNumber1, t.PhoneNumber2, t1.SomeOtherFieldForPhone1, t1.someOtherFieldForPhone1 FROM Table1 t JOIN Table2 t1 ON t1.PhoneNumber = t.PhoneNumber1 JOIN Table2 t2 ON t2.PhoneNumber = t.PhoneNumber2
透過為連接表(例如 t1 和 t2)添加別名,可以減少冗餘並使查詢更具可讀性。
以上是哪個更好:用於重複表格尋找的多個 JOIN 子句或 ON 子句中的 OR 條件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!