我正在尝试尽可能好地优化此查询,但由于此查询,我仍然获得查询锁定。任何人都可以提供一些改进它的建议。查询从表中获取最后一天的条目。
查询:
SELECT CR.id,
CR.servicecode,
CR.leadtime,
CR.redirecturl,
CRE.custemail,
CRE.custlname,
CRE.custfname,
CRE.duration,
CR.userid,
AA.lpintrotimearr,
AA.lpintrotimedep,
AA.landdatetimearr,
AA.landdatetimedep,
CR.newcustid,
cre.CRE.custmobilephone,
CRE.brandname
FROM response CR
LEFT JOIN agreement AA
ON CR.id = AA.id
LEFT JOIN request CRE
ON CRE.id = CR.id
WHERE CR.id > '20120617145243'
AND CR.approved = 1
AND CR.chlapproved != 0
AND CR.chlapproved IS NOT NULL
AND AA.id IS NOT NULL
AND ( AA.stdsign != 'on'
OR AA.stdsign IS NULL )
AND ( AA.ivaflag = 0
OR AA.ivaflag IS NULL )
AND ( AA.opt IS NULL
OR AA.opt = 0 );
解释:
一种方法是索引所有 3(AA.stdsign、AA.ivaflag 和 AA.opts)列,但所有三个标志(AA.stdsign、AA.ivaflag 和 AA.opts)只能有 3 个不同的值。索引这些会减少查询运行时间?
所有的 id 都是 varchar(60) 数据类型。