@sergey_privacy
Админ со стажем, начинающий DevOps

Как производить вычисления ip-адресов силами только sql?

Есть у нас на работе база Mysql. В ней есть следующие столбцы (описание - название - тип поля):
1. Ip-адрес подсети - IpAddr - INT
2. Маска подсети - Mask - INT
3. Первый узел подсети - StartIp - INT
4. Броадкаст подсети - EndIp - INT
5. Id точки из другой таблицы - IdFilial - INT
Ip-адреса хранятся в виде Integer и туда-сюда конвертятся нативной командой INET_ATON и INET_NTOA.
Если требуется найти, какой сети соответствует ip адрес, то создается запрос, содержащий примерно такое условие
WHERE StartIp < $Ipaddress AND EndIp > $Ipaddress

У меня есть желание сократить таблицу, убрав столбцы StartIp и EndIp. Никак не соображу, какого вида вычисления должны быть для подобного запроса?
  • Вопрос задан
  • 1125 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
IpAddress & Mask = IpAddr
(при условии, что IP гарантированно настоящий и не надо узнавать, это настоящий адрес или один из сервисных, связанных с сетью)
Возможно — я не знаю, каких размеров таблица — БД держат в таком виде ради индексирования.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы