asp.net - 大数据集的自动完成优化

标签 asp.net linq-to-sql jquery-ui data-access-layer sql-server-2008-r2

我正在开发一个大型项目,我必须为用户提供将数据输入表单的有效方法。

该表单的三个字段需要来自公共(public)数据源(SQL 表)子集的值。我使用 JQuery 和 JQuery UI 构建了一个自动完成功能,它将发布到通用 HttpHandler。

处理程序在内部使用 Linq-to-sql 从该特定表中获取所需的数据。该表大约有 10 个不同的列,linq 表达式使用 SqlMethods.Like() 来匹配这 10 个字段中每个字段的单个搜索词。

问题是该表包含大约 20K 行。自动完成工作完美无缺,接受大量数据会带来延迟,在大约 6 秒左右(在我的本地计算机上调试时)才会显示。

JqueryUI 自动完成具有 0 延迟,对 3 键进行查询,并且帖子的结果以 Facebook 风格的多行 optional 进行。 (我几乎不得不重写自动完成插件......)。

所以问题是数据与速度。关于如何加快速度有什么想法吗?我唯一的两个想法是缓存数据(如何/在哪里?);或者使用直接的 sql 数据读取器进行数据访问?

任何想法将不胜感激! 谢谢,

<bleepzter/>

最佳答案

我会考虑使用 .Take(10) linq 方法仅返回前 X 行。这应该转化为 sensbile sql 调用,这将大大减少数据库的负载。随着用户输入,他们会发现越来越少的匹配项,因此他们只会看到他们需要的数据。

我通常认为 10 个项目足以让用户了解正在发生的事情,并且仍然可以快速获取他们需要的数据(请参阅 amazon.com 搜索栏以获取示例)。

显然,如果您能够以有意义的方式对数据进行排序,那么这 10 个结果将更有可能快速为用户提供他们想要的内容。

关于asp.net - 大数据集的自动完成优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4628064/

相关文章:

c# - JavaScript:来自 ASP.NET 代码隐藏的 Alert.Show(message)

c# - View 中的多个模型 ASP.NET MVC(部分 View 方法)

javascript - 如何将数据从 ajax 传递到 Jquery UI 自动完成

javascript - 歌曲的进度条

javascript - .Remove() 删除所有 div 元素

asp.net - HttpHandler 生成的内容(axd 文件 - 捆绑 css/js)给出 404 错误。使用梳子

c# - ASP 从 GridView 内的 RadioButtonList 读取值

c# - 如何在 Linq to SQL 中确定记录是否已成功添加?

Linq 返回计数时选择什么?

linq-to-sql - F# 3.0 LINQ groupBy 示例错误