The more data u fetch the more time the query takes,.
Can u please check the explain plan for the entire month and lets us know.

If the number of rows processed by db is more than 10% of the total rows,
than optimizer considers doing a FULL TABLE scan better than a index scan


On 6/27/08, Darryl Steyn <[EMAIL PROTECTED]> wrote:
>
> Hi Ananda,
>
> The problem is the one date is stored as a unix time stamp, and the other
> as a XXXX-XX-XX XX:XX:XX format :/. Can MySQL just match it withouting?
>
> I have dropped the 2nd conversions on the WHERE part of the query as I can
> format that before executing to look correct.
>
> It's taking 4.5 seconds to execute when limiting to 10, the logs are
> inserted every 5 mins and when you select an entire month you can imagine
> how long it would take :/
>
> Thanks for the help so far,
> Darryl
>
> On Fri, Jun 27, 2008 at 6:13 PM, Ananda Kumar <[EMAIL PROTECTED]> wrote:
>
>> Also since mysql give date in Y-M-D you might want to remove the
>> "from_unixtime" and "date_format" formating functions
>>
>>  On 6/27/08, Darryl Steyn <[EMAIL PROTECTED]> wrote:
>>
>>> Hi Jörg,
>>>
>>> I have applied the changes you have suggested and still no joy :(
>>>
>>> I will carry on playing around with it to see if there is no way else for
>>> me
>>> to simplify it (maybe selecting only every 30mins or so).
>>>
>>> Thanks for the help,
>>> Darryl
>>>
>>> On Fri, Jun 27, 2008 at 5:28 PM, Joerg Bruehe <[EMAIL PROTECTED]> wrote:
>>>
>>> > Hi Darryl, all,
>>> >
>>> >
>>> > Darryl Steyn wrote:
>>> >
>>> >> Hi Ananda,
>>> >>
>>> >> The query is for reporting purposes and I would like to include a date
>>> >> range
>>> >> for the user to report on. That part of the query has to be there for
>>> it
>>> >> to
>>> >> work nicely.
>>> >>
>>> >> Regards,
>>> >> Darryl
>>> >>
>>> >> On Fri, Jun 27, 2008 at 4:25 PM, Ananda Kumar <[EMAIL PROTECTED]>
>>> wrote:
>>> >>
>>> >>  Hi Darryl,
>>> >>> Indexing looks fine, but what are ur trying to achive using this
>>> >>> conditions
>>> >>>
>>> >>> "cache.server.tstamp > 0) AND
>>> >>> ((date_format(cache.server.tstamp,'%Y-%m-%d') BETWEEN "2008-05-31"
>>> AND
>>> >>> "2008-06-10" ))"
>>> >>>
>>> >>>
>>> > IMO, it might help if you could code your condition(s) such that the
>>> format
>>> > conversion is applied only once (on the constant values),
>>> > and not on each row.
>>> >
>>> > With your current query, each row's "tstamp" value must be converted to
>>> > evaluate the condition.
>>> > If you would convert the values "2008-05-31" and "2008-06-10" to the
>>> format
>>> > of your column, you would avoid that (and so reduce load):
>>> >
>>> >   cache.server.tstamp > 0) AND
>>> >  (cache.server.tstamp BETWEEN  conversion ("2008-05-31 00:00:00") AND
>>> >                                conversion ("2008-06-10 23:59:59") )
>>> >
>>> > The correct "conversion" depends on your column's data type.
>>> >
>>> > Also, your condition "cache.server.tstamp > 0" should not be necessary,
>>> as
>>> > the BETWEEN will also ensure that.
>>> >
>>> >
>>> > HTH,
>>> > Jörg
>>> >
>>> > --
>>> > Joerg Bruehe,  MySQL Build Team,  [EMAIL PROTECTED]
>>> > Sun Microsystems GmbH,   Sonnenallee 1,   D-85551 Kirchheim-Heimstetten
>>> > Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
>>> > Vorsitzender des Aufsichtsrates: Martin Haering     Muenchen: HRB161028
>>> >
>>> >
>>>
>>
>>
>

Reply via email to