2012-12-18 115 views
2

我在我的应用程序中有一个选项,其中一些数据根据输入文本框中的文本进行搜索。减少数据库往返

因此,我在文本框text- change事件上执行搜索(调用以字符串作为输入的存储过程)。

我读过一篇关于Improving ADO.NET Performance的文章,我发现减少往返数据库可以提高性能。

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

+0

通常,您会在文本更改事件和数据库调用之间产生延迟,以便在用户输入一个单词时,它不会触发每个字母的搜索,只要他写完了。 –

+0

请解释这个问题的原因是一个'不是一个真正的问题',以便我可以修改! –

+0

我没有举报,但我可以想象问题的开放性可能会打扰一些人。为了正确回答您的问题,我们需要详细了解使用情况和预期结果,以及数据的数量和性质(静态与否)。它很难回答'这种情况',每一个具体的情况都会得到不同的答案 – ufosnowcat

回答

0

取决于您想要的用户体验 如果文本框的每次更改都必须触发更新,则无法执行其他操作。 框TextChanged不应该火类型,但在用户离开文本框后,才和值已更改

如果用户可以在多个字段进行搜索,但按钮

背后的搜索,如果此功能用于很多的每一封信并且没有太多数据相当静态,您可以将数据缓存在应用程序中并从缓存中获取

0

您留下一些猜测,因为不知道搜索返回的内容。

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

0

如何使用搜索索引实现?我做了一个非常类似的问题。

在开始我的应用程序时,我将初始化Lucene索引。指数会定期更新以适应变化。

http://www.codeproject.com/Articles/29755/Introducing-Lucene-Net

这比直接调用数据库快得多,是你的数据库服务器上的负载少以来,该指数只是要催芽。而且,Lucene支持一套非常强大的搜索标准。

1

不确定它是否适合您的要求,但您可以进行数据库调用并将所需的表加载到数据集中,然后在本地调用数据集。如果使用计时器引发文本更改事件的延迟,那么您已完成了您的要求,并且所有内容都应该很快。我们在我们的应用程序中使用这种方法,而且效果很好。

但是另一方面,我想强调一下,即使这种方法对提高性能来说也不算什么。基于其架构和流程,应用程序是快速的,只要应用程序的规模相当大。但想到技术上的捷径总是很棒的。

+0

是的,谢谢你的建议! –