我有一个可用的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'
答案 0 :(得分:0)
“它们是索引” - 这可能意味着索引中的每一个。这不与“复合”索引相同。以下情况要好得多(假设accountingtype
位于va
):
INDEX(accountingstate, accountingtype, accountingid)
前2个(全部带有'=')可以按任何顺序排列;最后一个('范围')必须在其他人之后。
deleted
位于不同的表中这一事实使得很难优化该部分。但是,可以帮助:
INDEX(deleted, crmid)
建议您拼出您真正需要的列,而不是*
。