> I'm logging IP addresses and also searching for existing ones. Does
> anyone happen to know which is more resource intensive: storing the
> IP's as integers using INET_NTOA() and INET_ATON() to convert them at
> each query; or simply storing the IP as a varchar? In each case the
> IP field would be the primary key.
I'm actually doing this but with Apache access log files. I tested both
methods and found that the INET_NTOA() and INET_ATON() were fairly quick and
didn't have much of a performance hit. I also tested the queries for
pulling the ips back out. Using the ints vs the ips. Both were indexed,
which made the insert a little slower but drastically improved the search.
The ints were a bit faster on the search than the varchar ips, but in my
case there wasn't a huge difference and I would rather not have to do the
extra processing and extra space for storing the ips as ints and index them
as I only run reports off the access log once a week.
One thing I might suggest is to find how many rows you really need to run
your reports (or dates etc whatever it may be). The smaller your row size
the faster your searches will be and the fewer indexes you have the faster
your inserts will be. You could just archive what you don't need into
another table/database and mess with the indexes and run your reports.
Hope that helped. :)