MySQL에 IP 주소를 저장하는 가장 효율적인 방법
이 질문에 이미 답변이 있습니다.
MySQL에서 IP 주소를 저장하고 검색하는 가장 효율적인 방법은 무엇입니까? 지금 내가하고있는 일 :
SELECT * FROM logins WHERE ip = '1.2.3.4'
여기서 ip는 VARCHAR(15)
필드입니다.
이 작업을 수행하는 더 좋은 방법이 있습니까?
들어 IPv4 주소 , 당신은 그들을 저장할 수 int unsigned
및 사용 INET_ATON()
과 INET_NTOA()
반대의 숫자 값에서 IP 주소를 반환하는 기능을하고, 그.
예:
SELECT INET_ATON('127.0.0.1');
+------------------------+
| INET_ATON('127.0.0.1') |
+------------------------+
| 2130706433 |
+------------------------+
1 row in set (0.00 sec)
SELECT INET_NTOA('2130706433');
+-------------------------+
| INET_NTOA('2130706433') |
+-------------------------+
| 127.0.0.1 |
+-------------------------+
1 row in set (0.02 sec)
IPv4 주소 만 저장하려면 32 비트 정수 필드에 저장할 수 있습니다.
IPv6도 지원하려면 문자열이 가장 읽기 쉽고 사용하기 쉬운 방법 일 것입니다 (기술적으로 16 바이트 VARBINARY()
필드 에 저장할 수 는 있지만 선택할 수있는 SQL 문을 생성 하는 것은 성 가실 것입니다. IP 주소 "수동")
가장 중요한 것은 열이 인덱싱되었는지 확인하는 것입니다. 이것은 IP 주소를 기반으로하는 쿼리에 큰 차이를 만들 수 있습니다.
작업하기 가장 쉬운 것은 무엇이든 상관 없습니다. 크기 또는 속도 문제는 프로파일 링을 통해 문제임을 알 때까지 문제가되지 않습니다. 경우에 따라 부분 일치를 수행해야하는 경우 문자열을 사용하는 것이 더 쉬울 수 있습니다. 그러나 공간 또는 성능 문제로 걱정할 실제 원인이없는 한 걱정하지 마십시오.
정수 필드에 정수 값을 직접 저장할 수 있습니까? IP 주소는 기본적으로 4 개의 "단락"입니다.
확인해보세요 : http://en.kioskea.net/faq/945-converting-a-32-bit-integer-into-ip
참고 URL : https://stackoverflow.com/questions/2542011/most-efficient-way-to-store-ip-address-in-mysql
'Development Tip' 카테고리의 다른 글
HTML : 유효한 XHTML 방식으로 각 TABLE ROW에 FORM 태그를 가질 수 있습니까? (0) | 2020.11.03 |
---|---|
Rails 마이그레이션 : 존재 여부를 확인하고 계속 진행 하시겠습니까? (0) | 2020.11.03 |
스칼라의 튜플 구문이 왜 그렇게 특이한가요? (0) | 2020.11.03 |
m2eclipse 오류 (0) | 2020.11.03 |
투명한 CSS 배경색 (0) | 2020.11.03 |