• Jan Provaznik's avatar
    Use limit for search count queries · 20b65f7c
    Jan Provaznik authored
    Search query is especially slow if a user searches a generic string
    which matches many records, in such case search can take tens of
    seconds or time out. To speed up the search query, we search only for
    first 1000 records, if there is >1000 matching records we just display
    "1000+" instead of precise total count supposing that with such amount
    the exact count is not so important for the user.
    
    Because for issues even limited search was not fast enough, 2-phase
    approach is used for issues: first we use simpler/faster query to get
    all public issues, if this exceeds the limit, we just return the limit.
    If the amount of matching results is lower than limit, we re-run more
    complex search query (which includes also confidential issues).
    Re-running the complex query should be fast enough in such case because the
    amount of matching issues is lower than limit.
    
    Because exact total_count is now limited, this patch also switches to
    to "prev/next" pagination.
    
    Related #40540
    20b65f7c
search_helper.rb 6.29 KB