postgresql、mysql数据库varchar、char、text的比较
MYSQL:
1、char長度固定, 即每條數據占用等長字節空間;
2、?varchar可變長度,可以設置最大長度,而varchar只會占用實際字符應該占用的空間+1,并且實際空間+1<=n。
3、超過char和varchar的n設置后,字符串會被截斷。
4、char的上限為255字節,varchar的上限65535字節,text的上限為65535。
5、txt在小于216字節的時候,實際空間會+2
官方說明:
| Data Type | Storage Required |
| CHAR(M) | M?×?w?bytes, 0?<=?M?<=?255, where?w?is the number of bytes required for the maximum-length character in the character set |
| BINARY(M) | M?bytes, 0?<=?M?<=?255 |
| VARCHAR(M),?VARBINARY(M) | L?+ 1 bytes if column values require 0 – 255 bytes,?L?+ 2 bytes if values may require more than 255 bytes |
| TINYBLOB,?TINYTEXT | L?+ 1 bytes, where?L?< 28 |
| BLOB,?TEXT | L?+ 2 bytes, where?L?< 216 |
| MEDIUMBLOB,?MEDIUMTEXT | L?+ 3 bytes, where?L?< 224 |
| LONGBLOB,?LONGTEXT | L?+ 4 bytes, where?L?< 232 |
| ENUM('value1','value2',...) | 1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum) |
| SET('value1','value2',...) | 1, 2, 3, 4, or 8 bytes, depending on the number of set members (64 members maximum) |
?pgsql
簡單來說,varchar的長度可變,而char的長度不可變,對于postgresql數據庫來說varchar和char的區別僅僅在于前者是變長,而后者是定長,最大長度都是10485760(1GB)
varchar不指定長度,可以存儲最大長度(1GB)的字符串,而char不指定長度,默認則為1,這點需要注意。
text類型:在postgresql數據庫里邊,text和varchar幾乎無性能差別,區別僅在于存儲結構的不同
| character varying(n),?varchar(n) | 變長,有長度限制 |
| character(n),?char(n) | 定長,不足補空白 |
| text | 變長,無長度限制 |
提示: 這三種類型之間沒有性能差別,除了當使用填充空白類型時的增加存儲空間,和當存儲長度約束的列時一些檢查存入時長度的額外的CPU周期。雖然在某些其它的數據庫系統里,character(n) 有一定的性能優勢,但在PostgreSQL里沒有。事實上,character(n)通常是這三個中最慢的,因為額外存儲成本。在大多數情況下,應該使用text 或character varying。
pgsql官方文檔:PostgreSQL: Documentation: 9.0: Character Typeshttps://www.postgresql.org/docs/9.0/datatype-character.html?
總結
以上是生活随笔為你收集整理的postgresql、mysql数据库varchar、char、text的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 布隆过滤器避免redis缓存穿透
- 下一篇: 我的收藏网址: