我有一个拥有约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
为什么关闭?这不是基于意见的,而是基于事实的。投票重新开放。 –