So I have a myisam table that contains around 2,000,000 ranges of IP address:

create table ipaddr {
id int(10) unsigned not null,
ip_int_start int(10) unsigned not null,
ip_int_end int(10) unsigned not null,
PRIMARY KEY  (`id`),
KEY `ip_info_active` (`ip_int_start`,`ip_int_end`)
}

I run this query on the data set fairly often:

select id from ipaddr where inet_aton('192.168.1.1') between
ip_int_start and ip_int_end

Depending on the ip address, the query can take between 2 and 10
seconds to run with a hefty load on the server.

I've found that the between operation doesn't use the index very well.
Is there another type of index I could use or a better way to optimize
this data for a faster lookup?

Thanks,
Eric

_______________________________________________

UPHPU mailing list
[email protected]
http://uphpu.org/mailman/listinfo/uphpu
IRC: #uphpu on irc.freenode.net

Reply via email to