SQLite Schema for One-to-Many relationship for fast lookup of the many

SQLite Schema for One-to-Many relationship for fast lookup of the many

假设我有原始数据,我希望为以下对象创建一个 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,然后是两个整数。大约有 2 亿多个 ID 可能会重复多次,并且每个 ID 可能与 1 到 >10,000,000 个不同的两个整数对相关联。

我想在此数据库上执行两个操作。

  1. 经常添加到此数据库。每隔几秒钟,我就有大约 1000 个新数据点(ID、第一个整数、第二个整数)我想添加到这个数据库中——这需要相当快地完成。
  2. 我希望能够查找像 ID_1 这样的 ID,并返回与 in 关联的所有整数对的列表 - 在本例中为 (0, 0) 和 (1, 1) ).这是主要的查找操作 - 我希望它很快发生!

我完全是一个 SQLite/SQL 菜鸟,花了很多时间试图找出两个表之间的一对多关系,但没有成功。关于如何设计我的表以使这两个操作正常运行有什么想法吗?

我很想帮助你,但我不确定你是否尝试过任何东西。对于像你这样的简单问题(量级是这里唯一的问题,而不是复杂性),你只需要一个 table 和一个索引

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);

我像上面那样创建了一个数据库,并使用 pair1pair2 的随机整数插入了 1300 万行。选择随机 ID 需要几毫秒,这符合您的 'very quickly'

标准

祝你好运