efficient serverside autocomplete

后端 未结 3 437
醉梦人生
醉梦人生 2021-02-01 10:10

First off all I know:

Premature optimization is the root of all evil

But I think wrong autocomplete can really blow up your site.

3条回答
  •  面向向阳花
    2021-02-01 10:50

    Optimising for Auto-complete

    Unfortunately, the resolution of this issue will depend heavily on the data you are hoping to query.

    LIKE queries will not put too much strain on your database, as long as you spend time using 'EXPLAIN' or the profiler to show you how the query optimiser plans to perform your query.

    Some basics to keep in mind:

    • Indexes: Ensure that you have indexes setup. (Yes, in many cases LIKE does use the indexes. There is an excellent article on the topic at myitforum. SQL Performance - Indexes and the LIKE clause ).

    • Joins: Ensure your JOINs are in place and are optimized by the query planner. SQL Server Profiler can help with this. Look out for full index or full table scans

    Auto-complete sub-sets

    Auto-complete queries are a special case, in that they usually works as ever decreasing sub sets.

    • 'name' LIKE 'a%' (may return 10000 records)
    • 'name' LIKE 'al%' (may return 500 records)
    • 'name' LIKE 'ala%' (may return 75 records)
    • 'name' LIKE 'alan%' (may return 20 records)

    If you return the entire resultset for query 1 then there is no need to hit the database again for the following result sets as they are a sub set of your original query.

    Depending on your data, this may open a further opportunity for optimisation.

提交回复
热议问题