我面臨着爲我的應用程序存儲某些參考數據(實質上是下拉值)的選擇。這些數據不會改變(或者如果是這樣,我需要重新啓動應用程序就沒問題),並且會經常作爲AJAX自動填充小部件的一部分進行訪問(因此可能會有一個用戶填寫一個數據領域)。我應該將參考數據存儲在我的應用程序內存或數據庫中嗎?
假設每個記錄看起來是這樣的:
category
effective_date
expiration_date
field_A
field_B
field_C
field_D
自動完成的查詢需要檢查輸入字符串中的每個記錄4個領域和反對的類別和有效/到期日期離散參數,因此,如果這是一個SQL查詢,它將有一個WHERE子句,看起來像:
... WHERE category = ?
AND effective_date < ?
AND expiration_date > ?
AND (colA LIKE ? OR colB LIKE ? OR colC LIKE ?)
我覺得這可能是一個相當低效的查詢,但我想我不知道有足夠的瞭解數據庫如何優化自己的指標,等我知道很多真正聰明的人真的很難在這種確切類型的事情上使數據庫引擎真的很快。
我看到的另一種方法是將它存儲在我的應用程序內存中。我可以爲每個類別提供這些記錄的列表,然後遍歷類別中的每條記錄以查看是否滿足過濾條件。這絕對是O(n),因爲我需要檢查類別中的每條記錄。
有沒有人遇到類似的選擇?你有任何見解提供?
編輯:感謝您的洞察力,鄉親。將整個數據發送到客戶端並不是一個真正的選擇,因爲數據集非常大(幾MB)。
對我來說,我會考慮在客戶端緩存數據。 – David 2010-02-12 22:13:14
@David,真的有太多的數據要發送到客戶端,在那裏進行過濾。 – pkaeding 2010-02-12 22:30:04