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