Hmmm...

Ok, my original assumption was that if I was grouping by those fields in my
SELECT, then including them in the index would help -- if the order of my
GROUP BY followed the order of the fields in the index.

Your saying it doesn't make much of a difference whether I include them or
not?

Thanks,
--jeff

----- Original Message -----
From: "Jeremy Zawodny" <[EMAIL PROTECTED]>
To: "Jeff Kilbride" <[EMAIL PROTECTED]>
Cc: "MySQL" <[EMAIL PROTECTED]>
Sent: Thursday, February 21, 2002 11:19 PM
Subject: Re: Wide Indexes


> On Thu, Feb 21, 2002 at 08:13:51PM -0800, Jeff Kilbride wrote:
> >
> > For reporting purposes, I usually use a wide index across all the
> > fields that are relevant to creating the reports. So, for example,
> > my sales table has this type of data:
> >
> > sale_id
> > sale_date
> > salesperson_id
> > product_id
> > referral_id
> >
> > [other sales data]
> >
> > sale_id is an auto_incrementing primary key. Most of the reports I
> > run are date-based -- show me the sales for xxxx date, for yyyy
> > salesperson, grouped by product_id and referral_id. My index for
> > this table would be:
> >
> > (sale_date, salesperson_id, product_id, referral_id)
>
> Got it.
>
> > My question is this: I know it's not good to index fields that have
> > few unique values, but what about including a field like that in a
> > wide index?
>
> I asked Monty about this last year and was surprised at his response.
> It's not nearly as "bad" of an idea as I had thought at the time.
>
> > If product_id only has 5 values, does it hurt to include it in this
> > wide index? Would it be better to include it or leave it out, if I'm
> > grouping by that field? Is there a rule of thumb for unique-ness
> > when indexing? (i.e. a column should have X unique values before
> > using it in an index...)
>
> With a 4-field index like that, if you're mainly selected based on
> sale_date, there are only a few cases when having the product_id and
> referral_id indexed will really help.
>
> Here's one.  If your query retrieves ONLY fields appearing in that
> index, MySQL will be smart enough to never even look at the
> table--it'll just used the index data directly.
>
> Is there another?  Probably, but I haven't thought of it...  Someone
> else my chime in.
>
> Jeremy
> --
> Jeremy D. Zawodny, <[EMAIL PROTECTED]>
> Technical Yahoo - Yahoo Finance
> Desk: (408) 349-7878   Fax: (408) 349-5454   Cell: (408) 685-5936
>
> MySQL 3.23.47-max: up 14 days, processed 468,981,120 queries (369/sec.
avg)
>


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to