2012-12-18 114 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

是的,謝謝你的建議! –