sqlite 用于快速查找多对多关系的一对多关系模式

ffx8fchx  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(238)

我希望为以下对象创建SQLite数据库的数据:

(ID_1, 0, 0)
(ID_2, 0, 0)
(ID_3, 1, 1)
(ID_1, 1, 1)
(ID_2, 1, 1)
(ID_3, 2, 2)
...

三个ID,然后是两个整数。可能重复多次的大约200M+ID,每个ID可能与1到>10,000,000个不同的两个整数对相关联。
我有两个操作要执行:
1.经常添加到这个数据库中。每隔几秒钟大约有1000个新的数据点(ID、第一个整数、第二个整数),这需要相当快地完成。
1.查找类似ID_1的id,并获得与其关联的所有整数对的列表--在本例中为(0,0)和(1,1)。这是主要的查找操作,我希望它快一点。
我正在努力弄清楚一对多的关系。如何设计我的表以使这两个操作运行良好?

j0pj023g

j0pj023g1#

我很想帮你,但我不确定你有没有试过什么。对于像您这样的简单问题(这里唯一的问题是大小,而不是复杂性),您只需要一个表和一个索引

CREATE TABLE IF NOT EXISTS triples (
    id INTEGER PRIMARY KEY, 
    tid TEXT, 
    pair1 INT, 
    pair2 INT
);

CREATE INDEX IF NOT EXISTS idx_tid ON triples (tid);

我创建了一个类似上面的数据库,并使用随机int为pair1pair2插入了13M行。选择随机ID只需要几毫秒,这就满足了您的标准:非常快
祝好运

相关问题