You may not have enough rows to make it worthwhile to use an index.

Sebastian Bergmann wrote:

For this query

   mysql> EXPLAIN
       ->  SELECT COUNT(accesslog.document_id) AS item_count,
       ->         data_table.string            AS item
       ->
       ->    FROM pot_accesslog accesslog,
       ->         pot_visitors visitors,
       ->         pot_documents data_table
       ->
       ->   WHERE accesslog.accesslog_id = visitors.accesslog_id
       ->     AND accesslog.client_id    = 1
       ->     AND accesslog.document_id  = data_table.data_id
       ->   GROUP BY accesslog.document_id,
       ->            data_table.string
       ->   ORDER BY item_count DESC;
   
+------------+--------+--------------------------------------+---------+---------+-----------------------+------+----------------------------------------------+
   | table      | type   | possible_keys                        | key     | key_len | 
ref                   | rows | Extra                                        |
   
+------------+--------+--------------------------------------+---------+---------+-----------------------+------+----------------------------------------------+
   | accesslog  | ALL    | accesslog_id,client_time,document_id | NULL    |    NULL | 
NULL                  |    6 | Using where; Using temporary; Using filesort |
   | visitors   | index  | PRIMARY                              | PRIMARY |       4 | 
NULL                  |    3 | Using where; Using index                     |
   | data_table | eq_ref | PRIMARY                              | PRIMARY |       4 | 
accesslog.document_id |    1 |                                              |
   
+------------+--------+--------------------------------------+---------+---------+-----------------------+------+----------------------------------------------+
   3 rows in set (0.01 sec)

none of the possible indexes of the pot_accesslog table

   CREATE TABLE pot_accesslog (
     accesslog_id      int(11)                   NOT NULL,
     client_id         int(10)       unsigned    NOT NULL,
     timestamp         int(10)       unsigned    NOT NULL,
     document_id       int(11)                   NOT NULL,
     exit_target_id    int(11)       DEFAULT '0' NOT NULL,
     entry_document    enum('0','1')             NOT NULL,

     KEY accesslog_id (accesslog_id),
     KEY client_time  (client_id, timestamp),
     KEY document_id  (document_id)
   ) DELAY_KEY_WRITE=1;

is used.

 Any help on improving the performance of this would be appreciated,
Sebastian






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