In the last episode (Nov 07), Michael T. Babcock said:
> I've got a query that selects the count of distinct rows in a table;
> the table has 453632 rows and 24 distinct class_id's.
> 
> mysql> SELECT count(DISTINCT(sig_class_id)) FROM acid_event;
> | count(DISTINCT(sig_class_id)) |    24 |
> 1 row in set (4.80 sec)
> 
> mysql> select count(*) FROM acid_event;
> | count(*) |   453632 |
> 1 row in set (3.12 sec)
> 
> Is there any way to speed up these queries (InnoDB tables), or just
> put up?
> 
> PS, at that number of distinct values, am I right in thinking that I
> should just drop the index on that column while I'm at it?

I haven't played with InnoDB tables much, but a select like that runs
much faster with an index on MyISAM tables.  Most of the server's time
should be spent reading the field values, and an index scan of just
that field will be faster than a table scan where it has to read the
whole record.

Yes, with only 24 values, MySQL will probably never use that index for
paring down records in a regular SELECT.  But for your count() case it
should.

-- 
        Dan Nelson
        [EMAIL PROTECTED]

---------------------------------------------------------------------
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