• Yorick Peterse's avatar
    Improve performance of User.by_login · 72f428c7
    Yorick Peterse authored
    Performance is improved in two steps:
    
    1. On PostgreSQL an expression index is used for checking lower(email)
       and lower(username).
    2. The check to determine if we're searching for a username or Email is
       moved to Ruby. Thanks to @haynes for suggesting and writing the
       initial implementation of this.
    
    Moving the check to Ruby makes this method an additional 1.5 times
    faster compared to doing the check in the SQL query.
    
    With performance being improved I've now also tweaked the amount of
    iterations required by the User.by_login benchmark. This method now runs
    between 900 and 1000 iterations per second.
    72f428c7
user.rb 23.4 KB