我该如何调整这个MySQL查询?

时间:2016-02-19 05:24:06

标签: mysql performance

我有一个可用的MySQL查询,但速度很慢。有人能帮我提高以下查询的速度吗?

    SELECT *
    FROM vtiger_accounting va 
    INNER JOIN vtiger_crmentity vc
    ON va.accountingid = vc.crmid  
    INNER JOIN vtiger_servicecontracts vs
    on   va.accountingrelated2=vs.servicecontractsid
    INNER JOIN vtiger_servicecontractscf vsf
    on       
    vsf.servicecontractsid=vs.servicecontractsid

    WHERE vc.deleted=0 AND va.accountingid > 0
    and va.accountingstate='Pending'
    and accountingtype='Pelunasan TB'

1 个答案:

答案 0 :(得分:0)

“它们是索引” - 这可能意味着索引中的每一个。这与“复合”索引相同。以下情况要好得多(假设accountingtype位于va):

INDEX(accountingstate, accountingtype, accountingid)

前2个(全部带有'=')可以按任何顺序排列;最后一个('范围')必须在其他人之后。

deleted位于不同的表中这一事实使得很难优化该部分。但是,可以帮助:

INDEX(deleted, crmid)

More discussion

建议您拼出您真正需要的列,而不是*