sql >> Databáze >  >> RDS >> Mysql

Jak uložit IP v mySQL

Navrhoval bych podívat se na to, jaký typ dotazů budete spouštět, abyste se rozhodli, který formát přijmete.

Pouze pokud potřebujete vytáhnout nebo porovnat jednotlivé oktety, budete muset zvážit jejich rozdělení do samostatných polí.

V opačném případě jej uložte jako 4bajtové celé číslo. To má také bonus, že vám umožňuje používat vestavěný MySQL INET_ATON() a INET_NTOA() funkce.

Výkon vs. prostor

Úložiště:

Pokud budete podporovat pouze adresy IPv4, pak vaším datovým typem v MySQL může být UNSIGNED INT který využívá pouze 4 bajty úložiště.

K uložení jednotlivých oktetů byste museli použít pouze UNSIGNED TINYINT datové typy, nikoli SMALLINTS , což by zabralo 1 bajt každého úložiště.

Obě metody by využívaly podobné úložiště s možná trochu větším množstvím samostatných polí pro určitou režii.

Více informací:

Výkon:

Použití jednoho pole přinese mnohem lepší výkon, je to jediné srovnání místo 4. Zmínil jste, že budete spouštět dotazy pouze na celou IP adresu, takže by nemělo být potřeba držet oktety odděleně. Pomocí INET_* funkce MySQL provedou převod mezi textovou a celočíselnou reprezentací jednou pro porovnání.



  1. Kde mám uchovávat přihlašovací údaje k mé databázi?

  2. Oracle Cloud:Vytvoření databáze ATP (Autonomous Transaction Processing).

  3. PostgreSQL nepřijímá alias sloupce v klauzuli WHERE

  4. Jak funguje funkce REGEXP_LIKE() v MySQL