Hello all,

I have struck with a big problem with MySQL 5.0.22 server on RHEL 3.

After an upgradation from MySQL 4.1.11 to MySQL 5.0.22 almost all the queries 
are struggling to execute and the DB server is clogged. Below is an example of 
what is happening.

This query usd to execute very fast on MySQL 4.1.11 (in about less than 10 
seconds). But on MySQL 5.0.22 it is taking an eternity. Running an EXPLAIN 
shows that an index_merge is being used as shown below in the EXPLAIN result. 
On MySQL 4.1.11 the the PRIMARY key was being used as the index as shown in the 
second query(The same query with FORCE index on PRIMARY). I am really confused 
as to why it is taking such a long time to execute when an index_merge is being 
used. As we can see that the number of row scans using index_merge is way too 
less when compared to the second query.

Why is the first query so slow when compared to the second one even if the 
number of rows to be examined is too less in the former?

Is this a bug in index_merge?

And we have atleast 15 such queries always running on the system. The server is 
clogged !!

Query with index_merge

# Execution time : 53 seconds
EXPLAIN 
SELECT 
SUM(1) AS ELE13, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 1, 1, 0 ) ) AS ELE14, 
SUM( IF( ( TFMM.FLD_ISSUE_CLOSED = 2 OR TFMM.FLD_ISSUE_CLOSED = 5 ) , 1, 0 ) ) 
AS ELE15, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 4, 1, 0 ) ) AS ELE16, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 3, 1, 0 ) ) AS ELE17, 
SUM( IF( TFMM.FLD_ASSIGNED_TO = 134, 1, 0 ) ) AS ELE18, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED != 3 AND TFMM.FLD_ASSIGNED_TO = 134 AND 
TFMM.FLD_USR_SEEN_FLAG = 0, 1, 0 ) ) AS ELE19, 
SUM( IF( ( TFMM.FLD_ISSUE_CLOSED = 2 OR TFMM.FLD_ISSUE_CLOSED = 5 ) AND 
TFMM.FLD_ASSIGNED_TO = 134 AND TFMM.FLD_USR_SEEN_FLAG = 1, 1, 0 ) ) AS ELE20, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 4 AND TFMM.FLD_ASSIGNED_TO = 134, 1, 0 ) ) AS 
ELE21, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 3 AND TFMM.FLD_ASSIGNED_TO = 134, 1, 0 ) ) AS 
ELE22 

FROM TBL_FORUMS_MSG_MAIN TFMM 

WHERE TFMM.FLD_ACC_ID in (6) 
AND TFMM.FLD_PARENT_ID = 0 
AND TFMM.FLD_MSG_ID > 0 
AND TFMM.FLD_MARK_AS_DELETED = 0 
AND TFMM.FLD_BLOCK_STATE = 0 
AND TFMM.FLD_BOUNCED_MAIL_FLAG = 0 
AND TFMM.FLD_ESCALATED_FLAG = 0 
AND TFMM.FLD_ADD_DATE_TIME >= '2007-01-23 00:00:00' 
AND TFMM.FLD_ADD_DATE_TIME <='2007-01-23 23:59:00' 
ORDER BY TFMM.FLD_ADD_DATE_TIME
;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*** row 1 ***
          table:  TFMM
           type:  index_merge
  possible_keys:  
PRIMARY,FLD_PARENT_ID,FLD_ADD_DATE_TIME,FLD_MARK_AS_DELETED,FLD_ACC_ID,FLD_BLOCK_STATE,FLD_ESCALATED_FLAG,FLD_BOUNCED_MAIL_FLAG
            key:  
FLD_PARENT_ID,FLD_MARK_AS_DELETED,FLD_ACC_ID,FLD_BLOCK_STATE,FLD_ESCALATED_FLAG,FLD_BOUNCED_MAIL_FLAG
        key_len:  4,2,2,2,2,2
            ref:  NULL
           rows:  10170
          Extra:  Using 
intersect(FLD_PARENT_ID,FLD_MARK_AS_DELETED,FLD_ACC_ID,FLD_BLOCK_STATE,FLD_ESCALATED_FLAG,FLD_BOUNCED_MAIL_FLAG);
 Using where
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Query with FORCE INDEX(PRIMARY)

# Execution time : 13 seconds
EXPLAIN 
SELECT 
SUM(1) AS ELE13, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 1, 1, 0 ) ) AS ELE14, 
SUM( IF( ( TFMM.FLD_ISSUE_CLOSED = 2 OR TFMM.FLD_ISSUE_CLOSED = 5 ) , 1, 0 ) ) 
AS ELE15, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 4, 1, 0 ) ) AS ELE16, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 3, 1, 0 ) ) AS ELE17, 
SUM( IF( TFMM.FLD_ASSIGNED_TO = 134, 1, 0 ) ) AS ELE18, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED != 3 AND TFMM.FLD_ASSIGNED_TO = 134 AND 
TFMM.FLD_USR_SEEN_FLAG = 0, 1, 0 ) ) AS ELE19, 
SUM( IF( ( TFMM.FLD_ISSUE_CLOSED = 2 OR TFMM.FLD_ISSUE_CLOSED = 5 ) AND 
TFMM.FLD_ASSIGNED_TO = 134 AND TFMM.FLD_USR_SEEN_FLAG = 1, 1, 0 ) ) AS ELE20, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 4 AND TFMM.FLD_ASSIGNED_TO = 134, 1, 0 ) ) AS 
ELE21, 
SUM( IF( TFMM.FLD_ISSUE_CLOSED = 3 AND TFMM.FLD_ASSIGNED_TO = 134, 1, 0 ) ) AS 
ELE22 

FROM TBL_FORUMS_MSG_MAIN TFMM  FORCE INDEX(PRIMARY)

WHERE TFMM.FLD_ACC_ID in (6) 
AND TFMM.FLD_PARENT_ID = 0 
AND TFMM.FLD_MSG_ID > 0 
AND TFMM.FLD_MARK_AS_DELETED = 0 
AND TFMM.FLD_BLOCK_STATE = 0 
AND TFMM.FLD_BOUNCED_MAIL_FLAG = 0 
AND TFMM.FLD_ESCALATED_FLAG = 0 
AND TFMM.FLD_ADD_DATE_TIME >= '2007-01-23 00:00:00' 
AND TFMM.FLD_ADD_DATE_TIME <='2007-01-23 23:59:00' 
ORDER BY TFMM.FLD_ADD_DATE_TIME
;

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*** row 1 ***
          table:  TFMM
           type:  range
  possible_keys:  PRIMARY
            key:  PRIMARY
        key_len:  4,
            ref:  NULL
           rows:  1059133 
          Extra:  Using where
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Thanks

Ratheesh K J

Reply via email to