Development Tip

MySQL에 IP 주소를 저장하는 가장 효율적인 방법

yourdevel 2020. 11. 3. 19:19
반응형

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

반응형