Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać adresy URL w MySQL

Zgodnie ze specyfikacją DNS maksymalna długość nazwy domeny to :

255 * 3 =765 <767 (tylko ledwie :-)) )

Zauważ jednak, że każdy komponent może mieć tylko 63 znaki.

Sugerowałbym więc pocięcie adresu URL na części składowe.

Używając http://foo. example.com/a/really/long/path?with=lots&of=query¶meters=that&goes=on&forever&and=ever

Prawdopodobnie byłoby to wystarczające:

  • flaga protokołu ["http" -> 0] ( zapisz "http" jako 0, "https" jako 1 itd.)
  • subdomena ["foo"] (255 - 63 =192 znaki:mógłbym odjąć jeszcze 2, ponieważ min tld to 2 znaki)
  • domena ["przykład"], ( 63 znaki )
  • tld ["com"] (4 znaki do obsługi "info" tld)
  • ścieżka [ "a/really/long/path" ] ( tak długo, jak chcesz -zachowaj w osobnej tabeli )
  • queryparameters ["with=lots&of=query¶meters=that&goes=on&forever&and=ever" ] ( przechowuj w osobnej tabeli klucz/wartość )
  • Rzadko używane informacje o numerze portu / uwierzytelnianiu mogą znajdować się w oddzielnej tabeli z kluczami, jeśli jest to rzeczywiście potrzebne.

Daje to kilka fajnych korzyści:

  • Indeks znajduje się tylko w tych częściach adresu URL, które chcesz wyszukać (mniejszy indeks!)
  • zapytania mogą być ograniczone do różnych części adresu URL (na przykład znajdź każdy adres URL w domenie facebook)
  • każdy adres URL, który ma zbyt długą subdomenę/domenę, jest fałszywy
  • łatwe do odrzucenia parametrów zapytania.
  • łatwe do wykonania wyszukiwanie nazw domen/tld bez uwzględniania wielkości liter
  • odrzuć cukier składni ( „://” po protokole, „.” między subdomeną/domeną, domeną/tld, „/” między tld a ścieżką, „?” przed zapytaniem, „&” „=” w zapytanie)
  • Unika głównego problemu z rzadkimi tabelami. Większość adresów URL nie ma parametrów zapytania ani długich ścieżek. Jeśli te pola znajdują się w osobnej tabeli, główna tabela nie przyjmie trafionego rozmiaru. Podczas wykonywania zapytań do pamięci zmieści się więcej rekordów, a tym samym szybsza wydajność zapytań.
  • (więcej zalet tutaj).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL AUTO_INCREMENT nie wycofuje się

  2. Wiersz poleceń eksportu tabeli Mysql XML

  3. Zapomniane hasło root do mysql

  4. SQL JOIN wiele do wielu

  5. Jak uzyskać różnicę lat z dwóch różnych dat?