Andrei Zmievski wrote:
> 
> Just installed 3.23.29-gamma and played around with fulltext indexes and
> some other stuff. Ran into a weird problem that I hope you can shed some
> light on.
> 
> Basically, a query's where clause has two parts joined by 'and':
> 
>         select count(*) from ARTICLES where Publication_ID = 9 and Status = 
>'completed';
> 
> It takes 10 seconds to run in a table of 10,000 records. If I do a
> query using those parts separately, the results come back instantly. I
> ran explain on them and here are the results:
> 
> mysql> show keys from ARTICLES;
> 
>+----------+------------+-------------------+--------------+-------------------+-----------+-------------+----------+--------+----------+
> | Table    | Non_unique | Key_name          | Seq_in_index | Column_name       | 
>Collation | Cardinality | Sub_part | Packed | Comment  |
> 
>+----------+------------+-------------------+--------------+-------------------+-----------+-------------+----------+--------+----------+
> | ARTICLES |          0 | PRIMARY           |            1 | Article_ID        | A   
>      |       10440 |     NULL | NULL   |          |
> | ARTICLES |          1 | Publication_ID    |            1 | Publication_ID    | A   
>      |        NULL |     NULL | NULL   |          |
> | ARTICLES |          1 | Incoming_Datetime |            1 | Incoming_Datetime | A   
>      |        NULL |     NULL | NULL   |          |
> | ARTICLES |          1 | idx_search        |            1 | Headline          | A   
>      |        NULL |        1 | NULL   | FULLTEXT |
> | ARTICLES |          1 | idx_search        |            2 | Tagline           | A   
>      |        NULL |        1 | NULL   | FULLTEXT |
> | ARTICLES |          1 | idx_search        |            3 | Byline            | A   
>      |        NULL |        1 | NULL   | FULLTEXT |
> | ARTICLES |          1 | idx_search        |            4 | Body              | A   
>      |        NULL |        1 | NULL   | FULLTEXT |
> | ARTICLES |          1 | Status            |            1 | Status            | A   
>      |        NULL |     NULL | NULL   |          |
> 
>+----------+------------+-------------------+--------------+-------------------+-----------+-------------+----------+--------+----------+
> 8 rows in set (0.00 sec)
> 
> mysql> explain select count(*) from ARTICLES where  Status = 'completed';
> 
>+----------+------+---------------+--------+---------+-------+------+-------------------------+
> | table    | type | possible_keys | key    | key_len | ref   | rows | Extra          
>         |
> 
>+----------+------+---------------+--------+---------+-------+------+-------------------------+
> | ARTICLES | ref  | Status        | Status |     255 | const | 8587 | where used; 
>Using index |
> 
>+----------+------+---------------+--------+---------+-------+------+-------------------------+
> 1 row in set (0.00 sec)
> 
> mysql> explain select count(*) from ARTICLES where Publication_ID = 9;
> 
>+----------+------+----------------+----------------+---------+-------+------+-------------------------+
> | table    | type | possible_keys  | key            | key_len | ref   | rows | Extra 
>                  |
> 
>+----------+------+----------------+----------------+---------+-------+------+-------------------------+
> | ARTICLES | ref  | Publication_ID | Publication_ID |       4 | const | 8526 | where 
>used; Using index |
> 
>+----------+------+----------------+----------------+---------+-------+------+-------------------------+
> 1 row in set (0.00 sec)
> 
> mysql> explain select count(*) from ARTICLES where Publication_ID = 9 and Status = 
>'completed';
> 
>+----------+------+-----------------------+------+---------+------+-------+------------+
> | table    | type | possible_keys         | key  | key_len | ref  | rows  | Extra    
>  |
> 
>+----------+------+-----------------------+------+---------+------+-------+------------+
> | ARTICLES | ALL  | Publication_ID,Status | NULL |    NULL | NULL | 10440 | where 
>used |
> 
>+----------+------+-----------------------+------+---------+------+-------+------------+
> 1 row in set (0.00 sec)
> 
> Why isn't it using index on the last query?
> 
Because there isn't an index that contains both fields.

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