1. 程式人生 > >mysql聯合查詢是用DISTINCT和GROUP BY之間的效能區別

mysql聯合查詢是用DISTINCT和GROUP BY之間的效能區別

在開發過程中遇到的問題:

有兩張表,登入記錄表和IP歸屬表

需求:查詢某個地區和某個時間段登入的記錄
有登入表有4000條資料,IP歸屬表有400條資料

用GROUP BY查詢結果

SELECT * FROM login_log WHERE acctLoginIP IN (SELECT ip FROM ip_geolocation WHERE 
region LIKE '%西藏%' GROUP BY ip) AND acctLoginTime BETWEEN '2014-10-01 00:00:00' AND '2014-12-25 23:59:59' LIMIT 10;

結果用時4秒左右

用DISTINCT

SELECT * FROM login_log WHERE acctLoginIP IN (SELECT DISTINCT ip FROM ip_geolocation WHERE 
region LIKE '%西藏%') AND acctLoginTime BETWEEN '2014-10-01 00:00:00' AND '2014-12-25 23:59:59' LIMIT 10;

結果用時0.005秒左右

有登入表有4000條資料