我有一個MVC自動完成功能,它將搜索輸入到文本框中的任意數量的字符串以查找地址。使用多個LIKE vs使用列表的LINQ to Sql性能
例如,如果他們輸入John Doe紐約,我的查詢將對客戶表中的所有列(第一個,最後一個,地址,城市,州,郵編)進行LIKE查看它是否與該術語匹配。然後移動到下一個搜索詞並執行相同操作。
我的問題是,對於每個字段的每個搜索項,對於每個搜索項都執行LIKE操作4次(或者最好是返回大約10000行並在內存中搜索它們)一個列表?
第一個需要更多的數據庫I/O,因爲它搜索表,但第二個需要更多的數據進入應用程序。
「客戶」表中的數據都不是全文搜索索引,並且最好在各個列上都有SQL索引。
不要從數據庫返回10,000行到Web應用程序。該數據庫旨在處理您需要完成的IO和數據過濾。 Web服務器/應用程序不是。 – DaveDev
在你的例子中,你指定「John Doe New York」相當於4分貝命中。爲什麼是這樣?決定多久調用一次數據庫的標準是什麼?幾年前我做了類似的事情,我基本上有一個計時器,它設置了每秒鐘在文本框中查詢數據庫的任何搜索詞(我認爲)。 – DaveDev
它會查詢John,然後查詢Doe,然後查詢New,然後查詢York。這些中的每一個都會在數據庫中運行查詢。我試圖將整個事件作爲IQueryable來運行,但它因爲創建了太多的笛卡爾或其他東西而崩潰。 – Scottie