Бих предложил да разгледате какъв тип заявки ще изпълнявате, за да решите кой формат да приемете.
Само ако трябва да извадите или сравните отделни октети, ще трябва да обмислите разделянето им на отделни полета.
В противен случай го съхранете като цяло число от 4 байта. Това също има бонуса, че ви позволява да използвате вградения MySQL INET_ATON()
и INET_NTOA()код>
функции.
Ефективност спрямо пространство
Съхранение:
Ако ще поддържате само IPv4 адреси, тогава вашият тип данни в MySQL може да бъде UNSIGNED INT
който използва само 4 байта място за съхранение.
За да съхранявате отделните октети, ще трябва да използвате само UNSIGNED TINYINT
типове данни, а не SMALLINTS
, което ще използва по 1 байт за съхранение.
И двата метода биха използвали подобно хранилище с може би малко повече за отделни полета за някои допълнителни разходи.
Повече информация:
- Общ преглед на числовия тип
- Целочисленни типове (точна стойност) - INTEGER, INT , SMALLINT, TINYINT, MEDIUMINT, BIGINT
Ефективност:
Използването на едно поле ще доведе до много по-добра производителност, това е едно сравнение вместо 4. Споменахте, че ще изпълнявате заявки само срещу целия IP адрес, така че не трябва да има нужда да държите октетите отделни. Използване на INET_*
функциите на MySQL ще извършат преобразуването между текстовото и целочисленото представяне веднъж за сравнение.