PG:INT4 VS. FLOAT4 VS. NUMERIC

PG:INT4 VS. FLOAT4 VS. NUMERIC

关系型数据库中数据类型是一个重要话题。PG提供很多不同类型,但并不是所有类型都相同。根据需要实现的目标,可能应用需要不同列类型。本文主要关注三种重要的数据类型:整型、浮点型、数字型。最近,我们看到了一些与这个话题相关的案例,我认为应该与公众分享这些知识,以确保读者避免最近在客户端应用程序中遇到的一些坑。

创建表并初始化数据

开始前,首先创建一个表并初始化10亿条数据,数据类型如下所示:

test=# CREATE TABLE t_demo (a int, b float, c numeric);
CREATE TABLE
test=# INSERT INTO t_demo
SELECT random()*1000000, random()*1000000, random()*1000000
FROM generate_series(1, 10000000) AS id;
INSERT 0 10000000


test=# VACUUM ANALYZE;
VACUUM
test=# \timing
Timing is on.

导入数据后,设置好优化器统计信息和hint位,以确保公平比较。

FLOAT VS. Numeric

虽然整型数据类型用处非常清楚但是numeric和float4/foat8之间有一个重要区别。在内部,float使用CPU的浮点单元。这有几个含义:float遵循IEEE754标准,意味着遵循标准定义的舍入规则。孙然这对于许多数据集来说正确,但是不

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值