swa66 - 1:48 pm on Feb 5, 2013 (gmt 0)
The tricky part of the query looks like the one with on the geoip_ip_blocks as the where clause with 2 constraints means you're touching on 2106604 entries.
I'd take the complexity of the join out of it to start with: just try to optimize the query on the block id. You can then later on work on the join.
I'd try to see what effect creating indexes on the start and end IP addresses has (to try to get the database not to search all lines)...