一、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的情況,超過的部分會被舍入,對于整數部分超過限制的情況,會引發錯誤。