大家都知道IN很好用,
但資料量大的時後就會有效能問題。
IN和OR會對全表格掃描完之後,
再將符合的資料篩選出來。
這裡不說效能。
本文重點是改寫。
改寫類型如下,當你的IN裡面的資料是來別的TABLE時。
測試IN SQL:
SELECT * FROM EMPLOYEES WHERE DEPARTMENT_ID IN( SELECT DEPARTMENT_ID FROM DEPARTMENTS WHERE DEPARTMENT_ID<50);
測試JOIN SQL:
SELECT * FROM EMPLOYEES JOIN DEPARTMENTS ON EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID AND DEPARTMENTS.DEPARTMENT_ID<50;
沒有留言:
張貼留言