Geo: Slow JOIN query with project_repository_states

In terms of total_time, this appears to be the slowest query in production now:

gitlabhq_production=# select * from pg_stat_statements order by total_time desc limit 10;
-[ RECORD 1 ]-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
userid              | 16384
dbid                | 16385
queryid             | 1990603067
query               | SELECT  "projects"."id" FROM "projects" LEFT OUTER JOIN "routes" ON "routes"."source_id" = "projects"."id" AND "routes"."source_type" = ? LEFT OUTER JOIN "project_repository_states" ON 
"projects"."id" = "project_repository_states"."project_id" WHERE "project_repository_states"."project_id" IS NULL AND "projects"."repository_storage" = ? LIMIT ?
calls               | 216557
total_time          | 685690332.906985
min_time            | 0.065
max_time            | 10525.851
mean_time           | 3166.32726213888
stddev_time         | 1100.65954526562
rows                | 2335409
shared_blks_hit     | 328794521372
shared_blks_read    | 409495
shared_blks_dirtied | 71530
shared_blks_written | 0
local_blks_hit      | 0
local_blks_read     | 0
local_blks_dirtied  | 0
local_blks_written  | 0
temp_blks_read      | 58213593
temp_blks_written   | 58213593
blk_read_time       | 2969.026
blk_write_time      | 0

/cc: @dbalexandre, @digitalmoksha

Edited by Stan Hu