输入和搜索,如何提高性能?

时间:2010-11-20 13:46:23

标签: javascript sql performance search

我想实现像在wiki上搜索一样的东西,当我想搜索“apple”时,我输入“a”它显示单词从“a”开始...我知道它可以在我键入时实现,我提交一个SQL查询来搜索文章从“a”开始,但是当查询请求越来越多时,它变得很慢......有没有任何性能转向技术来做这种事情?谢谢。

3 个答案:

答案 0 :(得分:2)

在服务器端,您应该将结果缓存,最好是在内存中缓存(例如:Memcached)。因此,如果10个人点击“a”,那么对数据库只有一个查询,从内存中进行9个超快速数据访问。

对于带宽优化,您应该以JSON或某些自定义数据格式发送数据。请参阅此精彩文章: Building Fast Client-side Searches

答案 1 :(得分:1)

不确定您使用的SQL版本,但有一些假设:

  • 您正在搜索的字段有索引
  • 您只返回所需的字段(如标题),而不是SELECT *

我建议考虑减少根据搜索查询的大小返回的行数,例如:(伪代码,不知道你的SQL方言)

if len(searchString)<=3
   select top 50 title from table order by title
else
   select title from table order by title

较小的搜索可能会返回更多行,但大多数用户可能会在输入之前键入多个字母,因此对于初始查询,请不要返回所有行。

答案 2 :(得分:0)

不是技术性的答案可能是显而易见的,但对于客户方,我认为你可以不是在按键上启动你的搜索事件,而是在按键后的X毫秒之后,条件是没有任何改变。

因此,如果我想要搜索“单词”并且我快速地输入“w”“o”“r”“d”,那么您只能提出请求,显然您可以优化该请求SQL方式