【发布时间】:2011-07-27 02:25:08
【问题描述】:
我的应用程序位于 C# [.NET 3.5] 和 MySQL 5.1 后端。
我有一个带有 TextBox 和 DataGridView 的 Windows 窗体。当用户在 TextBox 中键入几个字符时,将运行带有 Like 子句的 SQL Query 来过滤下面 DataGridView 中显示的记录。
项目列表已大大增加,而且我发现在每个字符输入上运行 SQL 查询并不合适。我认为另一种方法是在应用程序加载时创建一个 DataSet 并预先用最近的库存头寸填充它。比使用 LINQ 或类似的东西来过滤内存记录集。但是这种方法也没有优化,因为每当创建新账单时,库存中的商品都会减少,并且每次我都需要更新内存中的记录集。
还有其他优化的更快的方法吗?
【问题讨论】:
-
如果这是 .NET 4,我建议使用响应式扩展 (Rx):这是介绍性动手实验室中的示例之一。但我不确定 pre-v4 的支持情况如何。
-
我还可以建议您使用分钟。执行搜索查询之前的长度。因此,例如,仅当搜索词的长度超过 3 个字符时才运行查询。