Michael Lugassy commented on a post on Blogger.
If you're OK with country level only, I've found [fh-bigquery:geocode.geolite_country_bq] to perform faster. Your query on your main table should look like this:

SELECT
main.field1,
main.field2,
-- add any additional fields
geoip.Country_Name AS country
FROM (
SELECT
field1,
field2,
-- add any additional fields
INTEGER(PARSE_IP(user_ip)) AS user_ip,
INTEGER(PARSE_IP(user_ip)/(256*256*256)) AS user_ip_class_a
FROM
[project:dataset:main]
WHERE
field3 = 'foo'
-- add any additional criteria
)
JOIN EACH [fh-bigquery:geocode.geolite_country_bq] AS geoip
ON
main.user_ip_class_a = geoip.classA
WHERE
main.user_ip BETWEEN geoip.From_IP_Code
AND geoip.To_IP_Code
Shared publiclyView activity