2006-05-20 (土)
■ VARCHAR 型の消費バイト
MySQL 4.0 → 4.1 に移行しようとして、 テーブルの定義を眺めていた時に、ふと思った疑問。
「この varchar(32) で定義されたメールアドレスのカラムも、 UTF-8 で書き込まれて、以前の3倍容量を食うのか?」
そう思い、MySQL のマニュアルの Unicode のところを読むと、 以下のように書かれていた。
ヒント:スペースを UTF8 で保存するには、CHAR ではなく VARCHAR を使用してください。 そのようにしないと、MySQL では CHAR(10) CHARACTER SET utf8 カラムに対して 30 バイトを確保しなければなりません。 これは、使用可能な最大長が 30 バイトであるためです。
??? 意味が分かりません。 多分、翻訳のミスか何かだろうと思い、英語の原文のほうを見てみる。
Tip: To save space with UTF-8, use VARCHAR instead of CHAR. Otherwise, MySQL must reserve three bytes for each character in a CHAR CHARACTER SET utf8 column because that is the maximum possible length. For example, MySQL must reserve 30 bytes for a CHAR(10) CHARACTER SET utf8 column.
ようやく意味が分かった。 最初の部分の訳は、「UTF-8 使用時に容量を節約したければ」が正解。 CHAR(10) と定義すると問答無用で 30 バイト持っていかれるが、 VARCHAR(10) って定義しても、 データが英数字だけなら 10 バイトくらいしか消費しないってことか。
- 13 http://blogger.blog360.jp/552429/13187444
- 4 http://www.google.co.jp/hws/search?hl=ja&q=mysql v...
- 3 google検索(mysql verchar)
- 3 google検索(mysql varchar)
- 3 google検索(mysql varchar)
- 2 google検索(UTF-8 バリデーター length PHP)
- 2 google検索(varchar)
- 2 google検索(MySQL varchar(10))
- 2 google検索(varchar)
- 2 google検索(varchar)
- 2 google検索(utf8 MYSQL varchar char)
- 2 google検索(mysql varchar utf-8 OR utf8)
- 2 google検索(mysql varchar UTF バイト)
- 2 google検索(mysql varchar)
- 2 google検索(mysql varchar)
- 2 google検索(MySQL VARCHAR(2))
- 2 google検索(mysql verchar)
- 2 google検索(mysql varchar)
- 2 google検索(mysql varchar)
- 2 google検索(mysql varchar)
- 2 google検索(MySQL VARCHAR)
- 2 google検索(MySQL VARCHAR)
- 2 google検索(varchar utf-8)
- 2 BIGLOBE検索(MySQL Var char)
- 2 http://bloger.x0.com/result/mysql/mysql データ型
- 2 http://blog.chew.jp/result/mysql/mysql pear
- 2 http://apple.excite.co.jp/search.gw?look=applejp_j...
- 1 http://www.sfa-crm.com/word/文字化け/utf-8 文字化け
- 1 http://www.orz-web.net/www/yws_wd=Char|page=1.html...
- 1 google検索(mySQL varchar(10)型)
- 1 google検索(varchar mysql)
- 1 google検索(mysql char varchar)
- 1 google検索(mysql verchar)
- 1 google検索(VARCHAR UTF-8)
- 1 google検索(Mysql varchar 最大 utf-8)
- 1 google検索(MySQL VARCHAR)
- 1 google検索(mysql varchar utf)
- 1 google検索(MySQL VARCHAR型 5.0)
- 1 google検索(mysql utf8 varchar 文字 バイト)
- 1 google検索(mysql varchar)
- 1 google検索(varchar)
- 1 google検索(ruby char バイト length)
- 1 google検索(VARCHAR mysql)
- 1 google検索(mysql length 文字数 utf-8)
- 1 google検索(varchar php バイト)
- 1 google検索(mysql varchar)
- 1 google検索(MYSQL 4.1 コマンド バイト)
- 1 google検索(char型 varchar型 mysql)
- 1 google検索(mysql VARCHAR)
- 1 google検索(mysql varchar length)
- 1 google検索(mysql varchar)
- 1 google検索(mysql varchar)
- 1 google検索(mysql 4.0 varchar)
- 1 google検索(mysql 文字列 varchar)
- 1 google検索(UTF-8 VARCHAR)
- 1 google検索(MYSQL VARCHAR)
- 1 google検索(varchar )
- 1 google検索(MySQL Varchar)
- 1 google検索(varchar byte mysql utf8)
- 1 google検索(mysql verchar)
- 1 google検索(mysql utf8 varchar バイト)
- 1 google検索(f)
- 1 http://www.google.com.vn/search?hl=vi&client=firef...
- 1 google検索(Mysql バイト UTF-8)
- 1 google検索(マルチバイト varchar)
- 1 google検索(varchar(10) バイト)
- 1 google検索(mysql varchar char)
- 1 google検索(VARCHAR型 mysql 最大文字数)
- 1 google検索(mysql utf8 容量)
- 1 google検索(mysql varchar)
- 1 google検索(mysql charとvarchar 使い分け)
- 1 google検索(mysql varchar 使用 サイズ)
- 1 google検索(mysql varchar)
- 1 google検索(t)
- 1 google検索(t)
- 1 google検索(t)
- 1 google検索(t)
- 1 google検索(t)
- 1 google検索(t)
- 1 google検索(t)
- 1 google検索(t)
- 1 google検索(MySQL UTF バイト VARCHAR)
- 1 google検索(mysql varcher)
- 1 google検索(mysql varchar)
- 1 google検索(MySQL varchar character)
- 1 google検索(mysql varchar バイト )
- 1 google検索(varchar utf8)
- 1 google検索(varchar utf8)
- 1 google検索(varchar php バイト)
- 1 google検索(varchar mysql)
- 1 google検索(varchar mysql)
- 1 google検索(varchar バイト)
- 1 google検索(varchar 数字)
- 1 google検索(varchar バグ)
- 1 google検索(varchar バイト)
- 1 google検索(varchar バイト)
- 1 google検索(varchar)
- 1 google検索(varchar)
- 1 google検索(varchar)
- 1 google検索(varchar)
