Let's test some different possible queries for getting range contributions and see what the performance is like. Specifically I'd like to know if using the recentchanges table (as @jcrespo suggested) will provide a noticeable improvement over joining against the revision table. Since we don't actually have our IP-hex table available yet, let's use the CheckUser table for that data here.
Tests are being done on production due to the sensitivity of data on db2048. The following tables have to be dropped before this can be closed (while binlog is disabled for the session):
ip_changes
ip_changes2