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