UsersController#exists is slow due to a seq scan on namespaces
UsersController#exists has a mean runtime of 848ms with a 99th percentile over 2s due to a single SQL query:
gitlabhq_production=# explain SELECT "namespaces".* FROM "namespaces" WHERE (lower(path) = 'username' OR lower(name) = 'username') LIMIT 1;
QUERY PLAN
--------------------------------------------------------------------------------------------------------
Limit (cost=0.00..12.36 rows=1 width=189)
-> Seq Scan on namespaces (cost=0.00..129220.82 rows=10456 width=189)
Filter: ((lower((path)::text) = 'username'::text) OR (lower((name)::text) = 'username'::text))
It looks like we're lacking an index on lower(name)
on namespaces
.
Edited by Gregory Stark