我有一個擁有約6千萬條記錄的mysql數據庫。我將不得不每天生成報告。哪個SQL最適合使用
我有兩種類型的sql語句。
方法一
SELECT TransferStatus as Transfer_Status, count(ID) as Count
FROM calldetails
WHERE YEAR(IVRStartTime) = '2015' AND MONTH(IVRStartTime) = '11' AND DAy(IVRStartTime)='05' AND CallTransfer LIKE '163%'
GROUP BY TransferStatus;
方法2
SELECT TransferStatus as Transfer_Status,
count(ID) as Count FROM calldetails
WHERE (IVRStartTime BETWEEN '2015-11-05 00.00.00' AND '2015-11-05 23.59.59')
AND CallTransfer LIKE '163%'
GROUP BY TransferStatus
我想這兩個查詢都需要大約15分鐘,得到的結果。我的問題是哪一個最好用,還有什麼其他方式可以提高性能。
提示:創建一個合適的索引。 –
第一個是不可控的。因此,即使您在日期列中添加索引,它仍然會很慢。看到這個http://stackoverflow.com/questions/799584/what-makes-a-sql-statement-sargable – thepirat000
爲什麼關閉?這不是基於意見的,而是基於事實的。投票重新開放。 –