我的应用程序中有一个选项,其中一些数据根据在文本框中输入的文本进行搜索。
text- change
所以我确实对文本框事件执行搜索(调用以字符串为输入的存储过程) 。
我阅读了一篇关于提高 ADO.NET 性能的文章,我发现减少数据库往返可以提高性能。
对于这些情况有更好的方法吗?
我的应用程序中有一个选项,其中一些数据根据在文本框中输入的文本进行搜索。
text- change
所以我确实对文本框事件执行搜索(调用以字符串为输入的存储过程) 。
我阅读了一篇关于提高 ADO.NET 性能的文章,我发现减少数据库往返可以提高性能。
对于这些情况有更好的方法吗?
不确定它是否符合您的要求,但您可以进行数据库调用并将所需的表加载到数据集中,然后在本地调用数据集。如果您在使用计时器触发文本更改事件时引入延迟,那么您就完成了您的要求,一切都应该很快。我们在我们的应用程序中使用了这种方法,效果很好。
但另一方面,我想强调的是,即使这种方法对提高性能也没有太大影响。如果应用程序的规模相当大,应用程序的速度基于其架构和流程。但是想到技术的捷径总是很棒的。
使用搜索索引实现怎么样?我这样做是为了解决一个非常相似的问题。
在开始我的应用程序时,我会启动 Lucene 索引。该索引将定期刷新以适应更改。
http://www.codeproject.com/Articles/29755/Introducing-Lucene-Net
这比直接调用数据库要快得多,并且由于只需准备好索引,因此数据库服务器上的负载也更少。此外,Lucene 支持一组非常强大的搜索条件。
您留下一些猜测,因为不知道搜索返回什么。
您可以将数据读入字典,其中键是文本框输入,值是搜索返回的内容。然后您可以使用 LINQ 搜索密钥。
如果文本框的每次更改都必须触发更新,则取决于您所需的用户体验,您无能为力。textchanged 不应为每个键入的字母触发,而应仅在用户离开文本框且值已更改后触发
如果用户可以搜索多个字段但在按钮后面搜索
如果这个函数被大量使用并且没有太多的数据是相当静态的,你可以在你的应用程序中缓存数据并从缓存中获取