Select SUM(fen) sum from jifen where type='qiandao' and DATE_FORMAT( nl_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ) and nl_uid in
(select uid from user where user_type='2')
## 資料太大查詢速度太慢,3分鐘都出不來,建立的索引無用!該怎么優化下
uj5u.com熱心網友回復:
Select SUM(fen) sum
from jifen inner join user ur on nl_uid = ur.uid and ur.user_type = '2'
where type = 'qiandao'
and nl_time between DATE_ADD(curdate(),interval -day(curdate())+1 day) and date_add(curdate()-day(curdate())+1,interval 1 month);
-- and DATE_FORMAT(nl_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')
-- and nl_uid in (select uid from user where user_type = '2')
uj5u.com熱心網友回復:
我知道用相關子查詢, 但是怎么寫呢,我研究下, 表A ,表B , 取重復部分, 然后在條件過濾下uj5u.com熱心網友回復:
不要在條件中計算,像DATE_FORMAT( nl_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ),計算出月初月末日期,用between,子查詢可以用inner joinuj5u.com熱心網友回復:
子查詢的in可以用exists代替,不是inner joinuj5u.com熱心網友回復:
性能問題1:時間函式問題,可以用mysql5.7以上版本,建立時間函式索引可解決,DATE_FORMAT( nl_time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )性能問題2:in子查詢,修改為exists或用join代替。
uj5u.com熱心網友回復:
等號左邊,不要用函式。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/45046.html
標籤:MySQL
上一篇:新手小白請教影像拼接
