0
我們在數據庫中進行了邏輯刪除,每個表都有一個'已刪除'標誌,它是可以爲空的日期時間字段。何處過濾查詢中的「已刪除」行
Deleted DATETIME NULL
在我們的疑問,我使用模式:
SELECT *
FROM TableA a
INNER JOIN TableB b
ON b.id = a.pkid
AND b.deleted IS NULL
INNER JOIN TableC c
ON c.id = b.pkid
AND c.deleted IS NULL
WHERE a.deleted IS NULL
是,更多的效率比:
SELECT *
FROM TableA a
INNER JOIN TableB b
ON b.id = a.pkid
INNER JOIN TableC c
ON c.id = b.pkid
WHERE a.deleted IS NULL
AND b.deleted IS NULL
AND c.deleted IS NULL
我明白,當左聯接進入它的parrent變化。我在這裏談論INNER加入。
我認爲第一個效率更高,因爲服務器執行查詢的方式。我找不到我所看到的關於階段的頁面......即先是聯接,然後是何處,然後是訂單,然後是選擇......但是第一個例子會限制數據,然後那裏被觸發,所以WHERE覆蓋的數據較少?