前言
最近備考時剛好遇到這個知識點,覺得char和varchar2的不同點可以從評價算法的三個標準(空間複雜度,時間複雜度,穩定性)來區分,就mark一下。
相同點
char和varchar2都是用來存儲字符的。
不同點
-
內存消耗
char是固定長度字符型數據,長度以字節爲單位,最小長度和默認長度都爲1,最大長度爲2000。 varchar2是長度變化的字符型數據,最小長度爲1,最大長度爲4000。 varchar2的長度取決於存儲的字符串長度,char是固定長度,多出部分用空格填充。 varchar2比char更節省空間。
-
效率
使用varchar2時Oracle需要進行語法分析,分析這個字段有多少個字符,所以稍微慢一點 char的效率比varchar2的效率稍高(以空間換時間)
-
穩定性
如果一個varchar2列經常被修改,而且每次被修改的數據的長度不同,會引起“行遷移”現象, 而造成多餘的I/O,這是數據庫設計時要儘量避免的,在這種情況下用char代替varchar2會更好一點。
敲重點
當我們查詢的字段使用固定長度字符型數據時,需要注意格式,查詢的字符串長度需要與數據類型長度相等,否則查不到數據。