나는 500 만 개의 행 +이있는 테이블을 가지고 있으며 IP를 저장하기 위해 varchar(50)
필드가 있습니다. 나는이 쿼리를 실행하면큰 테이블의 varchar 검색
, 그것은 자원과 시간이 많이 걸립니다 :
SELECT * FROM table WHERE ip = 'xx.xxx.xx.xxx' LIMIT 1
나는이 과정을 개선하기 위해 무엇을 할 수 있는가? 너무 많은 중복이없는 가정,
create index idx_table_ip on table(ip)
그런 다음 쿼리가 빠르게 실행해야합니다
해당 쿼리 실행을 중지하십시오. – Strawberry
색인이 있습니까? SELECT *. 특정 필드를 선택하십시오. –
테이블 스키마를 수정할 수있는 경우 IP 열을 UNSIGNED INT로 변경 한 다음 INET_ATON을 변경하여 점으로 구분 된 IP를 4 바이트 UNSIGNED INT IP로 변환하십시오. 방법은 문자열 비교보다 빠릅니다. 해당 열의 색인도 도움이됩니다. http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton – Oliver