It's your LIMIT.
Just test these two queries:
SELECT * FROM geo.thing WHERE country_code = 'US' ORDER BY ansiname LIMIT 300, 70;
SELECT * FROM geo.thing WHERE country_code = 'US' ORDER BY ansiname LIMIT 141300, 70;
The second one should be a hell of allot slower than the first.
Basically, to be able to get those 70 records, mysql will have to select the first 370 in the first example, and the first 141370 in the second (allot slower).
To get over this, you can use 2 queries, and need a small table modification.
1 Add a field to your table, numeric, unique, indexed, call it "orderKey".
2 populate this field, with numbers, 1 to N, based on the order of your ansiname field, so the first one will be 1, second 2, 3rd 3, etc.
3 When you need to select, your query will look like:
SELECT * FROM geo.thing WHERE country_code = 'US' AND orderKey >= 41300 ORDER BY orderKey ASC LIMIT 70;
That should be allot faster than your current solution.