以秒为单位表示持续时间的列的类型和命名



我正在使用PostgreSQL数据库创建一个Ruby on Rails项目

我有一个表test_runs,我想向其添加一列,该列表示以秒为单位的持续时间。我不确定小数点前面会有多少个数字,但我还没有看到超过 3 或 4 的数字。

这就是我在想的:

create_table :test_runs, primary_key: :run_id do |t|
t.decimal :duration, precision: 15, scale: 6
t.timestamps
end
  1. 这是存储需要六个小数点精度的时间的最有效方法吗?
  2. 我应该给这个专栏起什么名字?我在想durationduration_seconds

您可能会提前将数据以微秒为单位存储为整数。每个值只需要 4 个(或 bigint 的 8 个(字节。 十进制需要更多。

数值以物理方式存储,没有任何额外的前导或尾随零。因此,列的声明精度和小数位数是最大值,而不是固定分配。(从这个意义上说,数值类型更类似于 varchar(n( 而不是 char(n(。实际存储要求是每组四个十进制数字的两个字节,加上三到八个字节的开销。

此外,SQL 运算/数学在纯整数上更快。

相关内容

最新更新