2013-03-26 51 views
0

我有一个MySql 5.5查询需要6-20秒才能执行。Mysql查询很差,但DESCRIBE看起来不错

SELECT TE.memb_priority, E.event_id, IFNULL(TE.user_show_as, E.show_time_as), 
     TE.email_id, TE.memb_color, TE.memb_inv_id, TE.invite_type, TE.is_confirmed, TE.invite_alias, IFNULL(TE.reminder, E.reminder_mins), 
     COALESCE(TE.delete_dt, IORG.rm_from_invite_dt), 
     GREATEST(E.last_update_time, IFNULL(TE.greatest_time, 0)), IORG.required_attendee, 0 
    FROM INVITED_ORG IORG, PERM_USER_EVENT_MEMB TE, USER_EVENT E 
WHERE TE.memb_inv_id  = IORG.org_id_FK 
    AND IORG.event_id_FK  = E.event_id  
    AND ((E.event_owner  = IORG.org_id_FK 
    AND E.exclude_owner = 0) 
    OR E.event_owner  != IORG.org_id_FK) 
    AND (E.gmt_end_date > '2013-02-17 00:00:00.0' 
    OR (E.recurrence IS NOT NULL 
    AND '2013-02-17 00:00:00.0' <= E.recurrence_end_dt)); 

描述显示:

id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra 
------------------------------------------------------------------- 
1,SIMPLE,TE,ALL,idx_id,NULL,NULL,NULL,61, 
1,SIMPLE,IORG,ref,"PRIMARY,idx_oid,idx_eid",idx_oid,4,GLOCAL.TE.memb_inv_id,343, 
1,SIMPLE,E,eq_ref,PRIMARY,PRIMARY,252,GLOCAL.IORG.event_id_FK,1,"Using where" 

正如你所看到的,DESCRIBE看起来不错。还有什么可以检查,使这个查询运行更有效率?

+1

你试过用解释吗? http://dev.mysql.com/doc/refman/5.1/en/using-explain.html – MatthewJ 2013-03-26 02:58:19

+0

尝试使用ANSI'join'语法并在'on'子句中给出适当的条件,这将有助于提高效率 – Meherzad 2013-03-26 03:59:04

+0

+1解释。 – 2013-03-26 04:00:33

回答

0

如果结果集不适合innodb_buffer_pool_size由于I/O分页,查询将花费特别长的时间。

+0

谢谢Michael。我调整了InnoDB配置,现在运行得更好。 – user1169840 2013-03-26 11:13:50

相关问题