我使用以下格式从第三方API收集数据:
产品:
item_id : 'RSA24334343',
site_code : 'RSA',
name: 'Mouse'
分类
category_id: 'RSA3232',
site_code : 'RSA',
name: 'Electronics',
parent_id: 'RSA1122'
所以我首先想到的是定义这样的表:
CREATE TABLE category(
category_id integer PRIMARY KEY,
site_code text,
name text,
parent_id text --REFERENCES category
);
CREATE TABLE item(
id integer PRIMARY KEY,
category_id integer REFERENCES category,
site_code text,
name text
);
但是,在对数据执行某些操作之前,使用整数id存储它们需要一些额外的代码。我可以在python中创建一个字典,如:
SITE_CODES = {'RSA': 0, 'RSB': 1}
然后更换' RSA'在项目ID中有新的整数值,但我觉得这很麻烦,我不是很喜欢它。
我可以使用完整的item_id,将其存储并作为文本索引,但我并不是真的,如果这是性能方面的最佳选择。 db将用于大量查询,db大小将快速增长。这是一个简化版本,但有一些额外的表有类似的问题。
我想知道哪种方式可以最大限度地提高效果。
答案 0 :(得分:1)
短文本字段不会比整数字段慢得多。这是优于"优化的领域"。从编程的角度考虑你所做的所有事情的后果 - 不要考虑关键类型的表现,考虑你提出的任何解决方案的心理/编程开销。对于我的DBA大脑,如果有一个合理大小的单列主键,并且您不需要自己生成这些键 - 允许传入的数据确定密钥类型并在路上摇摆。你很快就会忘记这个决定,因为它只会在没有太多额外开销的情况下工作。