我正在使用psycopg2连接到postgres数据库。
数据库有大约2亿行,我正在尝试创建按几列顺序排序的主键,即
part_id, date, time
A001 2014-10-23 00:00:00
A001 2014-10-23 00:00:10
...
A002 2014-10-23 00:00:00
我可以执行以下操作:
ALTER TABLE data ADD COLUMN ID SERIAL PRIMARY KEY;
但是,如何才能按part_id(虽然是varchar,它是如上所述的零件数字)进行排序,然后先进行日期排序,然后再进行时间排序,然后为已排序的表创建id列?
您可以在树列上添加一个主键:
alter table data add primary key(part_id, date, time);
但是,许多经验丰富的SQL开发人员认为主键应仅用于标识行和其他任何内容。根据这种方法,您应该使用简单的id
主键并在必要时创建其他索引,例如
alter table data
add id serial primary key,
add unique (part_id, date, time);
这似乎不太理想,因为它需要两个索引而不是单个索引,但是在实践中它很舒适并且避免了一些不必要的复杂性。
我强烈建议不要尝试创建一个整数列以反映其他列的顺序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句