- MySQL4ではVARCHARの長さが255が上限だったので、もっぱらvarchar(255)を使っていた。
- ある事件をきっかけにURLは大文字小文字を判別すべきだという認識が広まり、varbinary(255)が使われるようになった。
- しかし、255文字以上のURLが保存できない。
- URLの後ろが切られる。
- uniq制約をかけている場合、255bytes以降の文字列が異なるURLが格納できなくなる。
別カラム作る
- url, full_url, digest
- full_urlがあればアプリ側でそちらを優先する。
- 先頭255bytesに関してはインデックスが効く。uniqはdigestで取る。
何かの方法で圧縮する
別テーブル参照する
- 既存テーブルはurlのみ変更無し、別テーブルにdigest2text。
- URLの長さが一定以上だったら、md5:xxxxxxxxみたいな形式に変換してしまう。
- digest2textの変換テーブルを使ってアプリ側で変換。
- 完全一致の検索しかできない。(長すぎるURLに関しては)
単純に長さを増やす
トラックバック - http://subtech.g.hatena.ne.jp/mala/20090311