我有一個基本的反向查找表,其中ID是數字升序已經排序:查找已經按排序順序排列的大型靜態表(sqlite),最有效的策略是什麼?
id INT NOT NULL,
value INT NOT NULL
ID被不是唯一;每個ID都有5到25,000個關聯值。每個ID是獨立的,即,ID之間沒有關係。
該表格是靜態的。只讀,沒有插入或更新。該表有100-200萬條記錄。數據庫本身將在7-12GB左右。 SQLite的。
我會在此表中進行頻繁查找,並希望每個查詢的響應時間最快。查找只有一個方向的,無序的,並始終形式:
SELECT value WHERE id IN (x,y,z)
什麼優勢的排序預購給我的數據庫效率方面?與典型的無序表格相比,我應該做什麼不同?我如何告訴sql它是一個有序列表?
index是什麼意思:在id上創建索引是否有必要,甚至有幫助?
[更新感謝戈登Linoff聚集評論]。據我所知,sqlite不直接支持聚集索引。 wiki說:「是否支持[聚簇索引]?不,但如果使用INTEGER PRIMARY KEY,它將充當聚簇索引。」在我的情況下,列ID不是唯一的...
我找不到太多關於SQLite和聚集索引。我所看到的只是在sqlite維基上提到的(https://www.sqlite.org/cvstrac/wiki?p=PerformanceTuning):「是否支持[聚簇索引]?不,但如果使用INTEGER PRIMARY KEY,它會充當一個聚集索引。「 – LunaiThi
@LunaiThi。 。 。哎呀,我錯過了。那麼,一個普通的指數應該沒問題。 –