ようこそゲストさん
トップ
最新の日記
ユーザー登録
ログイン
ヘルプ
金利0無利息キャッシング – キャッシングできます
<keyhacを使い始めた
2009-03-11
URLを扱うテーブルを作るときにどうすべきか
15:01
|
MySQL4ではVARCHARの長さが255が上限だったので、もっぱらvarchar(255)を使っていた。
ある事件をきっかけに
URL
は大文字小文字を判別すべきだという認識が広まり、varbinary(255)が使われるようになった。
しかし、255文字以上の
URL
が保存できない。
URL
の後ろが切られる。
uniq制約をかけている場合、255bytes以降の
文字列
が異なる
URL
が納できなくなる。
別カラム作る
url
, full_url, digest
切られた状態、TEXT型、
md5
か
sha1
ハッシュ
full_urlがあれば
アプリ
側でそちらを優先する。
先頭255bytesに関しては
インデックス
が効く。uniqはdigestで取る。
何かの方法で圧縮する
pathtraq
の事例を詳しく知りたい。
別テーブル参照する
既存テーブルは
url
のみ変更無し、別テーブルにdigest2text。
URL
の長さが一定以上だったら、
md5
:xxxxxxxxみたいな形式に変換してしまう。
digest2textの変換テーブルを使って
アプリ
側で変換。
完
全一
致の検索しかできない。
単純に長さを増やす
FriendFeed
の例では、link VARCHAR(735) NOT NULLとなっている。
InnoDB
の
インデックス
の長さ制限が767bytesなので、他のカラムとの複合
インデックス
を作った場合を考えて、それより短くしているようだ。
735bytes以上の
URL
を格納できない。
コメントを書く
<keyhacを使い始めた