2014-03-19 231 views
0

我有以下查询,只有800记录服用5个minits运行,可你一些帮助,请MySQL查询速度很慢时,将子查询

SELECT 

vtiger_salesorder.salesorderid,vtiger_salesorder.salesorder_no,vtiger_salesorder.sostatus, 
(SELECT se.s_date 
FROM 
softMax_events as se 
INNER JOIN vtiger_salesorder as bm ON bm.salesorderid = se.orderNum 
where (bm.sostatus = 'Order' AND se.orderNum = vtiger_salesorder.salesorderid) AND se.appointTyp='60' 
group by bm.salesorderid Limit 0,1) As sdate 

FROM 
    vtiger_salesorder 
Inner Join vtiger_crmentity ON vtiger_salesorder.salesorderid = vtiger_crmentity.crmid 
WHERE (vtiger_salesorder.sostatus = 'Order') 
and (vtiger_crmentity.deleted<>'1') 

回答

0

尝试此查询,希望是这样,这将帮助你,

SELECT vtiger_salesorder.salesorderid,vtiger_salesorder.salesorder_no,vtiger_salesorder.sostatus,se.s_date 
    FROM vtiger_salesorder 
    Inner Join vtiger_crmentity ON vtiger_salesorder.salesorderid = vtiger_crmentity.crmid 
    INNER JOIN softMax_events se ON se.orderNum = salesorderid 
    WHERE (vtiger_salesorder.sostatus = 'Order') AND/OR 
    se.orderNum = vtiger_salesorder.salesorderid AND se.appointTyp='60' 
    and (vtiger_crmentity.deleted<>'1') 

编辑: 我注意到,有vtiger_salesorder and softMax_events之间的一些关系,你可以使用这两个表的连接,并以这种方式,你可以删除内部查询,我想它可能会对其进行测试。这将有助于你确定一些修改后。

+0

您好zzzz,我很好... thansk – user3428559

+0

@ user3428559,如果有帮助,您可以接受答案。 – NAZIK