我有一个基本的反向查找表,其中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。 。 。哎呀,我错过了。那么,一个普通的指数应该没问题。 –