INFORMIX-SE 7.1:CHAR(5)與INT
假設COL5 CHAR(5)將只從00001到99999包含數字:
- 一個CHAR(5)列使用5個字節的存儲,INTEGER使用多少個字節?
- INT列上的UNIQUE INDEX的執行速度是否比CHAR(5)快?
- INT列上的SELECT MAX()比COL5 CHAR(5)上的MAX()更快嗎?
INFORMIX-SE 7.1:CHAR(5)與INT
假設COL5 CHAR(5)將只從00001到99999包含數字:
- INFORMIX-SE 7.1:
更接近受支持的版本(比4.10或2.10),但仍有十年甚至更長時間沒有支持。
假設COL5 CHAR(5)將只從00001到99999包含數字:
- (5)列使用5個字節存儲的CHAR,多少字節的不使用INTEGER?
- INT列上的UNIQUE INDEX的執行速度是否比CHAR(5)快?
- INT列上的SELECT MAX()比COL5 CHAR(5)上的MAX()更快嗎?
INT uses 4 bytes.你還可以用INT
存儲0 ... 4294967295(無符號)順便說一下,我不會用CHAR
,VARCHAR
,或任何字符串-Y類型來存儲數字。你只是在這裏要求麻煩。例如,如果使用字符串比較,則9大於10。你也會錯過很多算術運算。
CHAR(5)
將始終使用5個字節的空間(在多字節編碼10從MySQL 4.1),因爲每個字符可以存儲255個不同的字符(或者多字節編碼甚至更多)。
一個無符號的SMALLINT
(0..65535)將需要2個無符號的MEDIUMINT
(0 .... 16,7 Million)3個字節。
底線:對數值數據使用CHAR類型總是浪費空間。
至於其他兩個問題:
是否在一個INT列的唯一索引的性能比CHAR(5)速度更快?
非常,非常有可能是的,因爲索引並不需要是字母數字字符,可以與數據
量較小的工作是SELECT MAX()在INT列比快MAX()在col5 CHAR(5)上?
極可能是,因爲對CHAR列運行一個數值函數,類型轉換,必須對每記錄執行。
參考:
此列上沒有算術運算符,它的票號根據行更新的方式而不同,票號會改變。 – 2010-08-14 13:28:32