Според спецификация на DNS максималната дължина на името на домейна е :
255 * 3 =765 <767 (Само едва :-) )
Забележете обаче, че всеки компонент може да бъде само 63 знака.
Така че бих препоръчал да нарежете URL адреса на компонентни битове.
Използване на http://foo. example.com/a/really/long/path?with=lots&of=query¶meters=that&goes=on&forever&and=ever
Вероятно това би било достатъчно:
- флаг на протокола ["http" -> 0 ] ( съхранявайте "http" като 0, "https" като 1 и т.н.)
- поддомейн ["foo"] (255 - 63 =192 знака:мога да извадя още 2, защото min tld е 2 знака)
- домейн ["example"], (63 знака)
- tld ["com"] ( 4 знака за обработка на "info" tld )
- път [ "a/really/long/path" ] (колкото искате -съхранете в отделна таблица )
- queryparameters ["with=lots&of=query¶meters=that&goes=on&forever&and=ever" ] ( съхраняват се в отделна таблица с ключове/стойности )
- рядко използвани неща с номер на порт/удостоверяване могат да бъдат в отделна таблица с ключове, ако наистина е необходимо.
Това ви дава някои приятни предимства:
- Индексът е само в частите от URL адреса, в които трябва да търсите (по-малък индекс!)
- заявките могат да бъдат ограничени до различните части за URL адрес (намерете всеки URL адрес във facebook домейна например)
- всичко url, което има твърде дълъг поддомейн/домейн, е фалшиво
- Лесно се отхвърлят параметрите на заявката.
- Лесно за извършване търсене на име на домейн/tld без значение на главни букви
- изхвърлете захарта в синтаксиса ( "://" след протокол, "." между поддомейн/домейн, домейн/tld, "/" между tld и пътя, "?" преди заявката, "&" "=" в заявка)
- Избягва основния проблем с рядката таблица. Повечето URL адреси няма да имат параметри на заявката, нито дълги пътища. Ако тези полета са в отделна таблица, тогава основната ви таблица няма да приеме удара по размер. Когато правите заявки, повече записи ще се поберат в паметта, следователно по-бърза производителност на заявките.
- (повече предимства тук).