我在我的應用程序中有一個選項,其中一些數據根據輸入文本框中的文本進行搜索。減少數據庫往返
因此,我在文本框text- change
事件上執行搜索(調用以字符串作爲輸入的存儲過程)。
我讀過一篇關於Improving ADO.NET Performance的文章,我發現減少往返數據庫可以提高性能。
這種情況有沒有更好的方法?
我在我的應用程序中有一個選項,其中一些數據根據輸入文本框中的文本進行搜索。減少數據庫往返
因此,我在文本框text- change
事件上執行搜索(調用以字符串作爲輸入的存儲過程)。
我讀過一篇關於Improving ADO.NET Performance的文章,我發現減少往返數據庫可以提高性能。
這種情況有沒有更好的方法?
取決於您想要的用戶體驗 如果文本框的每次更改都必須觸發更新,則無法執行其他操作。 框TextChanged不應該火類型,但在用戶離開文本框後,才和值已更改
如果用戶可以在多個字段進行搜索,但按鈕
背後的搜索,如果此功能用於很多的每一封信並且沒有太多數據相當靜態,您可以將數據緩存在應用程序中並從緩存中獲取
您留下一些猜測,因爲不知道搜索返回的內容。
您可以將數據讀取到字典中,其中鍵是文本框輸入,值是搜索返回的值。然後你可以使用LINQ來搜索密鑰。
如何使用搜索索引實現?我做了一個非常類似的問題。
在開始我的應用程序時,我將初始化Lucene索引。指數會定期更新以適應變化。
http://www.codeproject.com/Articles/29755/Introducing-Lucene-Net
這比直接調用數據庫快得多,是你的數據庫服務器上的負載少以來,該指數只是要催芽。而且,Lucene支持一套非常強大的搜索標準。
不確定它是否適合您的要求,但您可以進行數據庫調用並將所需的表加載到數據集中,然後在本地調用數據集。如果使用計時器引發文本更改事件的延遲,那麼您已完成了您的要求,並且所有內容都應該很快。我們在我們的應用程序中使用這種方法,而且效果很好。
但是另一方面,我想強調一下,即使這種方法對提高性能來說也不算什麼。基於其架構和流程,應用程序是快速的,只要應用程序的規模相當大。但想到技術上的捷徑總是很棒的。
是的,謝謝你的建議! –
通常,您會在文本更改事件和數據庫調用之間產生延遲,以便在用戶輸入一個單詞時,它不會觸發每個字母的搜索,只要他寫完了。 –
請解釋這個問題的原因是一個'不是一個真正的問題',以便我可以修改! –
我沒有舉報,但我可以想象問題的開放性可能會打擾一些人。爲了正確回答您的問題,我們需要詳細瞭解使用情況和預期結果,以及數據的數量和性質(靜態與否)。它很難回答'這種情況',每一個具體的情況都會得到不同的答案 – ufosnowcat