Python Postgres按多列排序,然后创建新索引

前鞭毛虫

我正在使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python Pandas按列排序多索引,但保留树结构

创建多列python

按列分组,对另一列进行排序,然后为python中的行分配等级

Python Xarray,按索引或维度排序?

Python:在多列中查找字符串,然后在新列中返回

Python遍历列表列表以按索引顺序创建新列表

Postgres按条件排序多列

如何使用 Python 创建多索引 DataFrame

Python代码将两列相乘,然后用值创建新列

用python创建索引列

python按值对字典项进行排序,然后按键

使用Python中的Pandas,如何按agg函数创建的两列进行排序?

排序多列.csv文件Python

Python Pandas列按计数排序

Python数据框按列分组并使用百分比创建新列

按列加入数据框并按值创建新列 Pandas Python

Python Pandas按多列分组,创建字符串列表,但求和

按频率对计数器排序,然后在Python中按字母顺序排序

Python按降序排序字典,然后按字母顺序排序

Python 和 Pandas:按多列应用

在python中将多索引df转换为排序的xlsx

按列表对索引进行排序-Python Pandas

Python:如何按值和索引对字典列表进行排序

在 Python 中按多個條件排序

通过在Python Pandas中组合具有相同索引的值来创建新列?

如何按多列对所有值进行排序,而不仅仅是重复 - python

python pandas多级索引-添加新列

首先按长度排序字符串数组,然后在Python 3中按字母顺序排序

首先按值对字典排序,然后按 python 3 中的键排序