【转】mysql 、oracle中char和varchar以及varchar2的区别
mysql
char是固定長度,varchar是可變長度的,varchar2是oracle特有的。
char定長存儲,速度快,但是存在一定空間的資源浪費,適用于存儲字段不是很大、對速度要求高的場合。速度快是因為在物理上是按照定長存儲的,這樣就可以根據偏移地址一次取出固定長度的字符。
varchar是變長存儲,所以速度沒有char快。varchar在存儲時,在物理上先要存儲該字段的實際長度,然后才會存儲內容,這樣在讀取的時候,也會讀取兩次。所以在讀取的時候也會比char要慢一下。但是可以節省空間。
由于mysql自身的特點,如果一個表中存在varchar字段,那么該表中的其他設置的char字段將自動轉換成varchar,在這種情況下設置的char是沒有意義的。所以要是想利用char的高效率,則要保證在該表中不能使用varchar字段!
oracle
char的長度是固定的,varchar2的長度是可以變的;比如存儲字符串"abc",對于char(10)來說,存儲的該字符串占用20個字節(其中包含7個空字符);而對于varchar2(10)來說,則只占用了3個字節的長度,10是最大值,當你存儲的字符小于10時,按照實際長度來存儲。
char的效率要比varchar2的效率高。
varchar2和varchar是同義詞,標準的varchar類型可以存儲空字符串,而oracle開發的varchar2不是一個標準的varchar,它將數據庫中varchar列可以存儲空字符串的特性改為了可以存儲null值;如果有想向后兼容的能力,則oracle建議使用varchar2.
?
總結:
char與varchar2二者是互補的關系,varchar2比char節省空間,在效率上比char要慢一些,要想獲得效率,就必須犧牲一定的空間,這也就是數據庫設計上常說的‘以空間換效率’。
varchar2雖然比char節省空間,但是如果一個varchar2列經常被修改,而且修改的數據長度還不相同,這會引起‘行遷移’現象,從而造成多余的I/O,這是在數據庫設計中盡量避免的,在這種情況下使用char來代替varchar2會好一些。
?
————————————————
版權聲明:本文為CSDN博主「小星星要努力」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_39306908/article/details/102563421
總結
以上是生活随笔為你收集整理的【转】mysql 、oracle中char和varchar以及varchar2的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《黑袍纠察队3》士兵男孩谈参演原因 角色
- 下一篇: Intel大方公布14代酷睿处理器:4n