bpchar 是一个字符串类型。相当于mySQL中的char类型。他是一个指定长度的字符串;例如:指定了20个长度,你存储了‘123’,长度也是20;查询速度的话,定长字符串如果存储合适(也就是他的长度),查询效率要高于不定长的字符串。
一、postgre的bpchar字段类型相当于MySQL的什么类型
bpchar 是一个字符串类型。相当于mySQL中的char类型。
他是一个指定长度的字符串;例如:指定了20个长度,你存储了‘123’,长度也是20;
查询速度的话,定长字符串如果存储合适(也就是他的长度),查询效率要高于不定长的字符串。
varchar是变长字符串。
所以,如果是确定长度的存储,用char;bpchar;是可以提高查询效率的。
bpchar,varchar,char,text之间的区别与联系
背景
在使用postgresql,及实际开发及数据整理过程中,常遇见来自不同源端或不同开发人员的数据表,其字段格式相同但却有少许不一致,如text ,bpchar,varchar,char等等格式,在进行数据整合时常需要一个个去检查字段格式并做出调整
下面整理了下面几种格式的区别:
text
这种格式起源与MySQL数据库,当时是为了存储unicode型的长字符串,在postgresql数据库里边也有这个字段类型,现在text和varchar几乎无性能差别,区别仅在于存储结构的不同
char
定长字符串,如定义char(16),则实际字符串若超过16位则报error,若少于16位,则按字符串原样保存不足部分用空格填充,存储长度为16位
varchar
不定长字符串,如定义varchar(16),则实际字符串若超过16位则报error,若少于16位,则按原样保存且按实际字符长度保存
bpchar
无具体含义,是varchar类型的别名
延伸阅读:
二、PostgreSQL任意精度类型(arbitrary precision numbers)
关键特性:占用存储空间可变
语法:
NUMERIC(precision, scale)
- precision,总精度,可以存储的总位数
- scale,小数点后的位数
NUMERIC类型适用于要求精确的场景,例如金融领域。
对NUMERIC类型的计算,如加、减、乘是精确的,但精确度的提升带来的是速度的下降,相比INTEGER类型和FLOAT类型,NUMERIC类型的计算速度十分缓慢。
对于小数位超过scale的情况,超过的部分会被舍入,对于整数部分超过限制的情况,会引发错误。