使用Where子句進行MySQL聯結最佳化
在MySQL中,可以使用各種類型的聯結來連接兩個表。當執行左連接並希望基於一個或兩個表中的列應用條件時,條件的放置可能會影響查詢的效率和結果。
考慮以下情境:
以下查詢可實現所需的結果:
SELECT * FROM categories LEFT JOIN user_category_subscriptions ON user_category_subscriptions.category_id = categories.category_id AND user_category_subscriptions.user_id = 1;
但是,在連接中使用WHERE 子句而不是AND 子句可能會導致減少效率:
SELECT * FROM categories LEFT JOIN user_category_subscriptions ON user_category_subscriptions.category_id = categories.category_id WHERE user_category_subscriptions.user_id = 1;
在外連接中,連接子句或WHERE 子句中條件的放置會大幅改變其行為。當在連接中指定時,僅連接滿足條件的行子集,從而實現有效的行選擇。相反,使用 WHERE 子句過濾已經連接的行,丟棄任何不符合條件的行。
因此,為了有效率地查詢所有類別以及特定使用者訂閱的類別,請將條件放在連線中建議使用條款。這種方法可確保僅連接相關行,從而提供更快、更準確的結果。
以上是MySQL 中的Where 子句連接:ON 與WHERE – 哪個更有效率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!