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

Jak przechowywać adres IP w mySQL

Sugerowałbym przyjrzenie się rodzajom zapytań, które będziesz uruchamiać, aby zdecydować, jaki format zastosujesz.

Tylko jeśli musisz wyciągnąć lub porównać poszczególne oktety, musisz rozważyć podzielenie ich na osobne pola.

W przeciwnym razie zapisz go jako 4-bajtową liczbę całkowitą. Ma to również tę zaletę, że umożliwia korzystanie z wbudowanego w MySQL INET_ATON() i INET_NTOA() funkcje.

Wydajność a przestrzeń

Pamięć:

Jeśli zamierzasz obsługiwać tylko adresy IPv4, twoim typem danych w MySQL może być UNSIGNED INT który wykorzystuje tylko 4 bajty pamięci.

Aby zapisać poszczególne oktety, wystarczy użyć UNSIGNED TINYINT typy danych, a nie SMALLINTS , co zużyłoby 1 bajt każdego miejsca na dane.

Obie metody wykorzystywałyby podobną pamięć, być może nieco więcej dla oddzielnych pól, z pewnym obciążeniem.

Więcej informacji:

Wydajność:

Użycie pojedynczego pola zapewni znacznie lepszą wydajność, jest to pojedyncze porównanie zamiast 4. Wspomniałeś, że będziesz uruchamiać zapytania tylko dla całego adresu IP, więc nie powinno być potrzeby oddzielania oktetów. Korzystanie z INET_* funkcje MySQL dokonają konwersji między reprezentacjami tekstowymi i liczbami całkowitymi raz w celu porównania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak usunąć zduplikowane wartości w tabeli mysql

  2. Przewodnik po projektowaniu bazy danych dla powiadomień w MySQL

  3. Zapytanie SPARQL, aby uzyskać wszystkich rodziców węzła

  4. MySQL Left Joins:Wybierz wszystko z jednej tabeli, ale tylko pasującą wartość w drugiej tabeli z kryteriami

  5. Wynik czasu zapytania w MySQL z PHP