- Affected version
getIpsByUser effectively uses the following query:
Although it looks complicated, this can be optimized quite a bit by an index on
SELECT ip, MIN(log_date) AS first_date, MAX(log_date) AS last_date, COUNT(*) AS total FROM xf_ip WHERE user_id = ? GROUP BY ip ORDER BY last_date DESC LIMIT 150;
(user_id, ip, log_date DESC). It's not a perfect optimization, but it should be good enough for all but the largest forums. Larger forums may be able to get better performance by removing
COUNT(*) AS total, but I haven't tested this.