一、postgre的bpchar字段類型相當(dāng)于MySQL的什么類型
bpchar 是一個(gè)字符串類型。相當(dāng)于mySQL中的char類型。
他是一個(gè)指定長度的字符串;例如:指定了20個(gè)長度,你存儲(chǔ)了‘123’,長度也是20;
查詢速度的話,定長字符串如果存儲(chǔ)合適(也就是他的長度),查詢效率要高于不定長的字符串。
varchar是變長字符串。
所以,如果是確定長度的存儲(chǔ),用char;bpchar;是可以提高查詢效率的。
bpchar,varchar,char,text之間的區(qū)別與聯(lián)系
背景
在使用postgresql,及實(shí)際開發(fā)及數(shù)據(jù)整理過程中,常遇見來自不同源端或不同開發(fā)人員的數(shù)據(jù)表,其字段格式相同但卻有少許不一致,如text ,bpchar,varchar,char等等格式,在進(jìn)行數(shù)據(jù)整合時(shí)常需要一個(gè)個(gè)去檢查字段格式并做出調(diào)整
下面整理了下面幾種格式的區(qū)別:
text
這種格式起源與MySQL數(shù)據(jù)庫,當(dāng)時(shí)是為了存儲(chǔ)unicode型的長字符串,在postgresql數(shù)據(jù)庫里邊也有這個(gè)字段類型,現(xiàn)在text和varchar幾乎無性能差別,區(qū)別僅在于存儲(chǔ)結(jié)構(gòu)的不同
char
定長字符串,如定義char(16),則實(shí)際字符串若超過16位則報(bào)error,若少于16位,則按字符串原樣保存不足部分用空格填充,存儲(chǔ)長度為16位
varchar
不定長字符串,如定義varchar(16),則實(shí)際字符串若超過16位則報(bào)error,若少于16位,則按原樣保存且按實(shí)際字符長度保存
bpchar
無具體含義,是varchar類型的別名
延伸閱讀:
二、PostgreSQL任意精度類型(arbitrary precision numbers)
關(guān)鍵特性:占用存儲(chǔ)空間可變
語法:
NUMERIC(precision, scale)
precision,總精度,可以存儲(chǔ)的總位數(shù)scale,小數(shù)點(diǎn)后的位數(shù)NUMERIC類型適用于要求精確的場(chǎng)景,例如金融領(lǐng)域。
對(duì)NUMERIC類型的計(jì)算,如加、減、乘是精確的,但精確度的提升帶來的是速度的下降,相比INTEGER類型和FLOAT類型,NUMERIC類型的計(jì)算速度十分緩慢。
對(duì)于小數(shù)位超過scale的情況,超過的部分會(huì)被舍入,對(duì)于整數(shù)部分超過限制的情況,會(huì)引發(fā)錯(cuò)誤。