MySQL에 IP 주소를 저장하는 가장 효율적인 방법
MySQL에서 IP 주소를 저장하고 검색하는 가장 효율적인 방법은 무엇입니까?지금 하고 있는 일:
SELECT * FROM logins WHERE ip = '1.2.3.4'
여기서 ip는VARCHAR(15)
들판.
더 좋은 방법이 있을까요?
IPv4 주소의 경우, 이러한 주소를 IP 주소의int unsigned
및 함수를 사용하여 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개의 "shorts"입니다.
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
'programing' 카테고리의 다른 글
Windows for Node.js 의존관계에서 Python 실행 (0) | 2022.09.08 |
---|---|
약속 콜백에서 vue 데이터 변경 (0) | 2022.09.08 |
MariaDB 업데이트 오류 내부 조인 및 선택 (0) | 2022.09.06 |
Apache RewriteRule 명령어로 환경변수를 설정할 때 변수 이름 앞에 "REDIRECT_"가 붙는 원인은 무엇입니까? (0) | 2022.09.06 |
PHP의 십진수에서 불필요한 0자리 제거 (0) | 2022.09.06 |