我目前面臨的問題是不得不頻繁地訪問實時小型(700 Mhz)設備上的大型簡單數據集。該數據集包含從縮寫到縮寫詞的約400,000個映射,例如, 「frgm」到「片段」。使用該設備時,讀數會頻繁發生,並且不應超過15-20ms。使用Python實時訪問簡單但大型的數據集
我的第一次嘗試是要利用的SQLite在爲了創建僅包含單個表,其中兩個字符串構成的數據集的簡單數據的基礎上:
CREATE TABLE WordMappings (key text, word text)
此表創建一次,雖然改變是可能,只有讀取訪問時間至關重要。
繼this guide,我的SELECT語句如下所示:
def databaseQuery(self, query_string):
self.cursor.execute("SELECT word FROM WordMappings WHERE key=" + query_string + " LIMIT 1;")
result = self.cursor.fetchone()
return result[0]
然而,在使用上擁有20000名縮寫測試數據的基礎這段代碼,我無法獲取比更快的數據〜60ms的,這是遠慢。
有關如何使用SQLite提高性能或者採用其他方法會產生更有希望的結果的任何建議?
你有足夠的內存來保存所有數據嗎?如果是這樣,請將其加載到字典中... – barny