0

URL を MySQL DB に保存したいと考えています。列の型は char(255) です。データ型を変更しない限り、それより大きくすることはできません。

URL は 255 文字を超える可能性があるため、DB に格納する前に切り取る必要があります。
問題は、URL がエンコードされている可能性があることです。後でデコードするときに、URL を損傷せずに URL を切り捨てる方法を理解する必要があります。

255 文字の 4 文字前の「%」を検索することを考えました。ある場合は、そこから切り取ります。そうでない場合 - 255 文字から切り取ります。

何か不足していますか?それを行うより良い方法はありますか?前の4文字で十分ですか?

4

5 に答える 5

1

URL を 255 文字のテーブル列に収めるのに苦労している場合は、https ://developers.google.com/url-shortener/libraries のようなURL 短縮ライブラリを使用して URLを短縮し、保存することを検討できます。

于 2013-05-17T16:35:11.863 に答える
0

URL を圧縮するための適切な戦略は、共通のパラメーター/エンコーディングを把握し、それらを特殊な文字/コードに置き換えることです。URL はエンコードされているため、安全に置換できる特殊文字が多数あります。

于 2013-05-17T16:28:52.447 に答える
0

URL の切り捨ては、URL に「損害」を与えます。

URL を切り詰める代わりに、URL を切り詰めるのではなく、必要に応じて複数の行に分割することを検討してください。

以下は、その目的のための単純なテーブル デザインです。

NotTruncatedUrl
PK UrlId Int
PK FragmentOrder Int
NN フラグメント Varchar(255)

2 列の pk に注目してください。これにより、URL ごとに複数のフラグメントが可能になります。

URL を 255 の長さのフラグメントに分割し (最後のフラグメントは 255 未満である可能性が高い)、fragmentOrder を使用して並べ替えます。

于 2013-05-17T16:29:18.377 に答える
0

簡単に言えば、しないでください。

それは本当に、本当に悪い考えです。255 文字だけで URL を表すことはできません。URL は、ブラウザの移植性に影響を与えずに 2000 文字程度まで大きくすることができます。それらを 255 に制限することは、データに損傷を与えるクラッジです。

健全性を確認するために、クエリのパフォーマンスを VARCHAR と CHAR(255) で測定しましたか? まだお持ちでない場合は、そうしたいかもしれません。固定幅型から得られる適度なパフォーマンスの向上が、ハックな回避策を正当化するには十分ではない可能性がかなりあります。

于 2013-05-17T16:37:11.230 に答える