C# 减少数据库往返

C# 减少数据库往返,c#,.net,winforms,sql-server-2008,.net-4.0,C#,.net,Winforms,Sql Server 2008,.net 4.0,我的应用程序中有一个选项,其中一些数据根据文本框中输入的文本进行搜索 所以我对textboxtext-change事件执行搜索(调用以字符串作为输入的存储过程) 我读过一篇文章,其中提到我发现减少数据库往返可以提高性能 对于这种情况,有没有更好的方法?取决于您想要的用户体验 如果文本框的每一次更改都必须触发一次更新,那么您就无能为力了。 textchanged不应该为每一个输入的字母触发,而应该在用户离开textbox并且值发生更改后触发 如果用户可以在多个字段上搜索,但在按钮后面搜索 如果经常

我的应用程序中有一个选项,其中一些数据根据文本框中输入的文本进行搜索

所以我对textbox
text-change
事件执行搜索(调用以字符串作为输入的存储过程)

我读过一篇文章,其中提到我发现减少数据库往返可以提高性能


对于这种情况,有没有更好的方法?

取决于您想要的用户体验 如果文本框的每一次更改都必须触发一次更新,那么您就无能为力了。 textchanged不应该为每一个输入的字母触发,而应该在用户离开textbox并且值发生更改后触发

如果用户可以在多个字段上搜索,但在按钮后面搜索


如果经常使用此函数,并且没有太多静态数据,则可以在应用程序中缓存数据并从缓存中提取数据,这会留下一些猜测,因为不知道搜索返回的是什么


您可以将数据读入字典,其中键是文本框输入,值是搜索返回的值。然后您可以使用LINQ来搜索键。

使用搜索索引实现怎么样?我这样做是为了一个非常相似的问题

在启动应用程序时,我将初始化Lucene索引。索引将定期刷新以适应变化


这比直接DB调用快得多,而且DB服务器上的负载也更小,因为只需要初始化索引。此外,Lucene支持一组非常强大的搜索条件。

不确定它是否符合您的要求,但您可以进行数据库调用,将所需的表加载到数据集中,然后在本地调用数据集。如果您在使用定时器触发文本更改事件时引入延迟,那么您的需求就完成了,一切都应该很快。我们在应用程序中使用了这种方法,它非常有用


但另一方面,我想强调的是,即使是这种方法,对提高绩效也不是很大。如果应用程序的规模相当大,那么基于其体系结构和流程的应用程序是快速的。但是在技术上考虑快捷方式总是很好的。

通常,在文本更改事件和DB调用之间会产生延迟,因此当用户键入一个单词时,这不会触发对每个字母的搜索,但一旦他写完。请解释一下这个问题是
而不是真正的问题的原因,以便我可以修改!!!我没有指出这一点,但我想这个问题的开放性可能会让一些人感到困扰。为了正确回答您的问题,我们需要有关使用情况和预期结果的详细信息,以及数据的数量和性质(静态或非静态)。很难回答“这类情况”,每个具体情况都会得到不同的答案