List:General Discussion« Previous MessageNext Message »
From:Brent Baisley Date:November 18 2004 4:45pm
Subject:Re: efficient query for: "it's your birthday today"
View as plain text  
You don't have to replicate the data, and you shouldn't. Since you will 
be searching on parts of the data, you may want to store it in parts. 
Then you can create indexes to "merge" the data for searching.
For instance, you use three fields for storage: year, month, day. The 
you can create two compound indexes, one on year+month+day and one on 
just month+day. Searching  will then be very fast, regardless of 
whether you are searching on the full "date" or just the month and day.

Now, if your table is only 10K records, that's pretty small and you 
probably won't see any performance difference using indexes since the 
table may be in cache. If the table is not going to get a lot bigger 
(i.e. 50K+ records), it may be easier just to make sure you have plenty 
of RAM in the machine.


On Nov 18, 2004, at 11:14 AM, Jigal van Hemert wrote:

> From: "Brent Baisley" <brent@stripped>
>
>> Without breaking the "date" up into it's separate parts, you can't use
>> an index, so you will always do a full table scan. Your searches will
>> get slower as you add more records.
>
> That was what I feared; I was just hoping that MySQL wouldn't treat the
> DATETIME column type as a variation of a string or an integer (with a 
> set of
> functions to extract various parts of the datetime), but as a type 
> with a
> special kind of indexing, etc.
> Searching for month + date or other parts of a datetime is pretty 
> common and
> it would be useful to be able to do these kind of operations without 
> storing
> the same data in more than one place.
>
>> I don't know how many records you
>> are searching on in your example, but if you have a lot, the 
>> difference
>> is pretty minimal and may be due to slightly different loads on the
>> computer. Although the DATE_FORMAT one has the extra overhead of
>> formating every single record to do the comparison.
>
> The tests were made on a slow test server with about 10,000 records (if
> queries run fast on this server they'll be blazingly fast on the 
> production
> machines ;-) )
>
>
> Regards, Jigal.
>
>
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    
> http://lists.mysql.com/mysql?unsub=1
>
>
-- 
Brent Baisley
Systems Architect
Landover Associates, Inc.
Search & Advisory Services for Advanced Technology Environments
p: 212.759.6400/800.759.0577

Thread
efficient query for: "it's your birthday today"Jigal van Hemert18 Nov
  • Re: efficient query for: "it's your birthday today"Brent Baisley18 Nov
  • Re: efficient query for: "it's your birthday today"Rhino18 Nov
  • Re: efficient query for: "it's your birthday today"Jigal van Hemert18 Nov
    • Re: efficient query for: "it's your birthday today"Brent Baisley18 Nov
  • Re: efficient query for: "it's your birthday today"Jigal van Hemert18 Nov
  • Re: efficient query for: "it's your birthday today"Eric McGrane18 Nov
    • Re: efficient query for: "it's your birthday today"SGreen18 Nov
    • Re: efficient query for: "it's your birthday today"Remo Tex19 Nov
      • cancel <20041119094232.23509.qmail@lists.mysql.com>id19 Nov
  • Re: efficient query for: "it's your birthday today"Jigal van Hemert19 Nov
RE: efficient query for: "it's your birthday today"Eric McGrane18 Nov
Re: efficient query for: "it's your birthday today"Santino18 Nov