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 个不同的两个整数对相关联。
我想在此数据库上执行两个操作。
- 经常添加到此数据库。每隔几秒钟,我就有大约 1000 个新数据点(ID、第一个整数、第二个整数)我想添加到这个数据库中——这需要相当快地完成。
- 我希望能够查找像
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);
我像上面那样创建了一个数据库,并使用 pair1
和 pair2
的随机整数插入了 1300 万行。选择随机 ID 需要几毫秒,这符合您的 'very quickly'
标准
祝你好运
假设我有原始数据,我希望为以下对象创建一个 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 个不同的两个整数对相关联。
我想在此数据库上执行两个操作。
- 经常添加到此数据库。每隔几秒钟,我就有大约 1000 个新数据点(ID、第一个整数、第二个整数)我想添加到这个数据库中——这需要相当快地完成。
- 我希望能够查找像
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);
我像上面那样创建了一个数据库,并使用 pair1
和 pair2
的随机整数插入了 1300 万行。选择随机 ID 需要几毫秒,这符合您的 'very quickly'
祝你好运