PaulB
Well-known member
- Affected version
- 2.2.9
getIpsByUser effectively uses the following query:
Although it looks complicated, this can be optimized quite a bit by an index on
SQL:
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.