我必須每月獲得記錄/計數。 沒有方法可以做到---哪一個更好從DATE_FORMATE()或MONTH(),YEAR()
SELECT COUNT(1)AS approved FROM lu_registration
WHERE MONTH(approved_date)=MONTH(NOW()) AND YEAR(approved_date)=YEAR(NOW());
SELECT COUNT(1)AS approved FROM lu_registration
WHERE DATE_FORMATE(approved_date, '%Y-%m')=DATE_FORMATE(NOW(), '%Y-%m');
SELECT COUNT(CASE WHEN MONTH(approved_date)=MONTH(NOW())
AND YEAR(approved_date)=YEAR(NOW()) THEN 1 END)AS approved FROM lu_registration;
哪一個最好。
當前Senerio: 有一個月過濾器,我們選擇月,得到04-2016。這樣我們就可以使用DATE_FORMAT(%間%Y)或月= 04 &年= 2016匹配得到records.but哪一個性能更好的明智
實際查詢優化是:
SELECT COUNT(CASE WHEN status='A' AND MONTH(approved_date)=04
AND YEAR(approved_date)=2016 THEN 1 END)AS approved, COUNT(CASE WHEN status='D' AND MONTH(reject_date)=04
AND YEAR(reject_date)=2016 THEN 1 END)AS rejected FROM lu_registration;
這裏是approved_date & reject_date兩個不同的列或已批准的用戶也可以拒絕
好的答案,很好的解釋,加上我學到了一個新單詞!謝謝! :-) – PerlDuck
有一個月份過濾器,我們選擇月份,並檢索爲04-2016。因此,我們可以使用date_format(%m-%y)或month = 04&year = 2016來獲取記錄。但哪一個性能更好? – Zigri2612
@ Zigri2612 - 一個範圍(可以使用索引)始終優於任何種表達。 –