在用户输入时加速记录过滤

RKh*_*RKh 4 c# mysql .net-3.5

我的应用程序是在C#[.NET 3.5]和MySQL 5.1后端.

我有一个带有TextBox和DataGridView的Windows窗体.当用户在TextBox中输入少量字符时,将运行带有Like子句的SQL查询来过滤下面DataGridView中显示的记录.

项目列表已经大大增加,我也没有发现在每个字符输入上运行适当的SQL查询.我认为另一种方法是在应用程序加载时创建一个DataSet,并将其填入最近的库存位置.比使用LINQ或类似的东西来过滤内存中的记录集.但是这种方法也没有优化,因为无论何时创建新账单,库存中的物品都会减少,每次我都需要更新内存中的记录集.

还有其他优化和更快的方式吗?

ole*_*sii 5

可以做一些优化

数据库层关于如何优化db端的所有内容的精彩
帖子

您还可以尝试分片和水平缩放

应用程序端
不要使用数据集,因为它们很重,体积大,速度慢,并且很难维护与数据库相同的数据副本.考虑一些技巧:

  • 缓存用户搜索
  • 仅在键入2或3个符号后开始搜索
  • 在后台线程中运行搜索
  • 将搜索限制在TOP 20(或其他)
  • 确保来自各种代码抽象的搜索很轻松,简单易懂
  • 优化您的搜索查询,SQL操作的顺序确实很重要

基础设施

  • 检查您的连接速度,是否有可能改进它?
  • 将数据库尽可能靠近应用程序