

請教這個sql怎么優化,現在運行時間大概8秒多
uj5u.com熱心網友回復:
給一個文字版的行不uj5u.com熱心網友回復:
EXPLAIN SELECTzm.xfdc_index,
sum(ald.encash_amt) / 100 - sum(
arld.paid_prin_amt + arld.paid_ovd_prin_amt
) / 100
FROM
cm_zm_das_info zm,
ants_loan_detail ald LEFT JOIN
(
SELECT
contract_no,
business_date,
sum(paid_prin_amt) AS paid_prin_amt,
sum(paid_ovd_prin_amt) AS paid_ovd_prin_amt
FROM
ants_repay_loan_detail
WHERE
business_date <= '2019-02-28'
GROUP BY
contract_no
) arld ON ald.contract_no = arld.contract_no
WHERE
ald.business_date <= '2019-02-28'
AND zm.ic_number = ald.cert_no
GROUP BY
zm.xfdc_index
order by null ;
uj5u.com熱心網友回復:
這么看陳述句的提升空間不大,你可以增加2個索引試試看。ants_loan_detail(cert_no,business_date);
ants_repay_loan_detail(business_date,contract_no);
uj5u.com熱心網友回復:



這兩個索引都有了,但是不太明白左連接的時候為什么不使用索引,是不是左連接只能全表查詢?而且使用了臨時表,這個臨時表可以優化掉么
uj5u.com熱心網友回復:
select * from a left join b on b.id = a.id where a.id = ? ;以上陳述句,on后邊的內容,不會走a表的索引。where后的條件,才可以能會走a表的索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/66867.html
標籤:MySQL
上一篇:需求描述,請提供60秒內,同一個用戶出現5次及以上記錄的資料
下一篇:資料庫
