Hi All,

 This query takes 3-4 minutes to run from the mysql> command line:

 select DAYOFMONTH(started_date), object_status, count(*) from sessobjs 
   where MONTH(started_date)=3 group by started_date, object_status

 Sample Output:

mysql> select DAYOFMONTH(started_date), object_status, count(*) from
sessobjs 
where MONTH(started_date)=3 group by started_date, object_status;
+--------------------------+---------------+----------+
| DAYOFMONTH(started_date) | object_status | count(*) |
+--------------------------+---------------+----------+
|                        1 |             1 |      185 |
|                        1 |             2 |    23647 |
|                        1 |             3 |      257 |
|                        1 |             4 |      304 |
|                        1 |             5 |       69 |
|                        1 |             6 |        9 |
|                        1 |             7 |       13 |
|                        2 |             1 |      403 |
|                        2 |             3 |      271 |
|                        2 |             4 |      283 |
|                        2 |             5 |       32 |
|                        2 |             7 |       14 |
|                        3 |             1 |      811 |
|                        3 |             2 |    20582 |
|                        3 |             3 |      243 |
|                        3 |             4 |      287 |
|                        3 |             5 |      124 |
|                        3 |             6 |        1 |
|                        3 |             7 |       43 |


 However, with the addition of a where clause, this query only a few seconds
to run:

 select DAYOFMONTH(started_date), object_status, count(*) from seessobjs
    where cell_id=1 AND MONTH(started_date)=3 group by started_date,
object_status

Sample output:

mysql> select DAYOFMONTH(started_date), object_status, count(*) from
sessobjs
    -> where cell_id=29 and MONTH(started_date)=3 group by started_date,
object_status;
+--------------------------+---------------+----------+
| DAYOFMONTH(started_date) | object_status | count(*) |
+--------------------------+---------------+----------+
|                        1 |             2 |      205 |
|                        2 |             2 |      195 |
|                        3 |             2 |      177 |
|                        4 |             2 |      223 |
|                        4 |             3 |        1 |
|                        5 |             2 |      194 |
|                        6 |             2 |      195 |
|                        7 |             2 |       12 |
+--------------------------+---------------+----------+
8 rows in set (2.45 sec)


Here is my index structure for the table SESSOBJS:

mysql> show index from sessobjs;
+----------+------------+---------------+--------------+---------------+----
-------+-------------+----------+
| Table    | Non_unique | Key_name      | Seq_in_index | Column_name   |
Collation | Cardinality | Sub_part |
+----------+------------+---------------+--------------+---------------+----
-------+-------------+----------+
| sessobjs |          0 | PRIMARY       |            1 | sobj_id       | A
|     3449788 |     NULL |
| sessobjs |          1 | sess_id       |            1 | sess_id       | A
|        NULL |     NULL |
| sessobjs |          1 | object_status |            1 | object_status | A
|        NULL |     NULL |
| sessobjs |          1 | objda         |            1 | started_date  | A
|        NULL |     NULL |
| sessobjs |          1 | objda         |            2 | object_status | A
|        NULL |     NULL |
| sessobjs |          1 | cell_id       |            1 | cell_id       | A
|        NULL |     NULL |
| sessobjs |          1 | cell_id       |            2 | started_date  | A
|        NULL |     NULL |
| sessobjs |          1 | cell_id       |            3 | object_status | A
|        NULL |     NULL |
| sessobjs |          1 | site_id       |            1 | site_id       | A
|        NULL |     NULL |
| sessobjs |          1 | site_id       |            2 | started_date  | A
|        NULL |     NULL |
| sessobjs |          1 | site_id       |            3 | object_status | A
|        NULL |     NULL |
| sessobjs |          1 | host_id       |            1 | host_id       | A
|        NULL |     NULL |
| sessobjs |          1 | sess_id_2     |            1 | sess_id       | A
|        NULL |     NULL |
| sessobjs |          1 | sess_id_2     |            2 | started_date  | A
|        NULL |     NULL |
| sessobjs |          1 | sess_id_2     |            3 | object_status | A
|        NULL |     NULL |
+----------+------------+---------------+--------------+---------------+----
-------+-------------+----------+

And the table structure:

mysql> describe sessobjs;
+---------------+-------------+------+-----+---------------------+----------
------+
| Field         | Type        | Null | Key | Default             | Extra
|
+---------------+-------------+------+-----+---------------------+----------
------+
| sobj_id       | int(11)     |      | PRI | 0                   |
auto_increment |
| host_id       | int(11)     |      | MUL | 0                   |
|
| object_name   | varchar(50) |      |     |                     |
|
| object_type   | varchar(20) | YES  |     | NULL                |
|
| started       | datetime    |      |     | 0000-00-00 00:00:00 |
|
| finished      | datetime    | YES  |     | NULL                |
|
| object_size   | int(15)     | YES  |     | NULL                |
|
| backup_mode   | varchar(15) | YES  |     | NULL                |
|
| object_status | int(11)     |      | MUL | 0                   |
|
| sess_id       | int(11)     |      | MUL | 0                   |
|
| started_date  | date        |      | MUL | 0000-00-00          |
|
| cell_id       | int(11)     |      | MUL | 0                   |
|
| site_id       | int(11)     |      | MUL | 0                   |
|
+---------------+-------------+------+-----+---------------------+----------
------+
13 rows in set (0.66 sec)


In other queries, I frequently do left joins on sess_id, host_id, cell_id, &
site_id, which is why I've indexed each of those.  Can anyone recommend a
better indexing scheme? What I am doing wrong?  

Appreciate any help,

Thanks,

-Bill Clements
 (Please reply to my e-mail address as well, as I am not subscribed to the
mysql-mailing list.)


 
 

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