Mysql 我的查询在加入时非常慢,但它们很快
我的两个查询分别工作得很快,但是当我加入两个查询时,执行起来需要很多时间Mysql 我的查询在加入时非常慢,但它们很快,mysql,Mysql,我的两个查询分别工作得很快,但是当我加入两个查询时,执行起来需要很多时间 SELECT b.*, a.* FROM (SELECT r.vou_no, r.vou_date, r.lr_date, r.due_date, r.vac_code, r.vamount, r.vmfg_am
SELECT b.*,
a.*
FROM (SELECT r.vou_no,
r.vou_date,
r.lr_date,
r.due_date,
r.vac_code,
r.vamount,
r.vmfg_amt,
r.vter_cd,
r.mkt_year,
r.mnth_code
FROM ledfile AS r
WHERE r.mkt_year = 2012
AND r.mnth_code BETWEEN 201210 AND 201306
AND r.div_code = 1
AND r.vdepo_code = 21
AND r.vbook_cd = 80
AND Ifnull(r.del_tag, '') <> 'D'
ORDER BY r.vac_code,
r.vou_date,
r.vou_no) b,
(SELECT a.vac_code vcode,
a.vouno,
a.bill_date,
a.vamount vamt,
a.vou_date vdate
FROM rcpfile a
WHERE a.mkt_year = 2012
AND a.div_code = 1
AND a.vdepo_code = 21
AND a.vbook_cd IN ( 20, 21, 22, 90,
98, 80 )
AND Ifnull(a.del_tag, '') <> 'D'
ORDER BY a.vac_code,
a.bill_date,
a.vouno) a
WHERE a.vcode = b.vac_code
AND a.vouno = b.vou_no
AND a.bill_date = b.vou_date;
像这样的怎么样
SELECT b.vou_no
, b.vou_date
, b.lr_date
, b.due_date
, b.vac_code
, b.vamount
, b.vmfg_amt
, b.vter_cd
, b.mkt_year
, b.mnth_code
, a.vac_code vcode
, a.vouno
, a.bill_date
, a.vamount vamt
, a.vou_date vdate
FROM ledfile b
JOIN rcpfile a
ON a.mkt_year = b.mkt_year
AND a.div_code = b.div_code
AND a.vdepo_code = b.vdepo_code
AND a.del_tag = b.del_tag
WHERE a.vbook_cd IN (20,21,22,90,98,80)
AND COALESCE(b.del_tag,'') <> 'D'
AND b.mkt_year = 2012
AND b.mnth_code BETWEEN 201210 AND 201306
AND b.div_code = 1
AND b.vdepo_code = 21
AND b.vbook_cd = 80
请你把这部分分开好吗?告诉我你在做什么,不要把代码挂在墙上。要在多个表上的查询中执行更快的联接,表上有适当的索引是很重要的。在查询中加入的列必须在索引中。这里是否有任何理由使用子查询而不是常规加入?这也有助于制定解释计划。当我运行此查询时,错误代码:2008 MySQL client耗尽了@草莓的内存