上周,我在服务器中运行了我的SQL查询,并且需要一天才能完成查询。但是当我在Local主机上尝试时,它会很快运行。
SET @curr_date = CURDATE();
SELECT s.created_date as 'date', 'registrasi_h2h' as transaction , s.no_ecash as nomor_ecash, IFNULL(s.partner_id,'') as partner_id
FROM subscription_hist s
WHERE DATE(s.created_date) = @curr_date - INTERVAL 1 DAY
ORDER BY s.created_date ASC;
我一直在试图在整个星期找到问题,但是我找不到解决方案。
我能提供的唯一建议是尝试添加可以在WHERE
子句中使用的索引来加快速度。而且,由于您真的在寻找特定日期的记录,因此created_date
上的索引可能会大大帮助。
ALTER TABLE subscription_hist ADD INDEX c_date_idx (created_date)
mySQL不支持功能索引,因此在您的WHERE
子句中使用DATE(created_date)
可能无法利用索引。但是,如果created_date
已经是DateTime列,那么我什至看不到用DATE()
包装它的任何点。只需直接使用该列,例如这样的东西:
SELECT
created_date AS `date`,
'registrasi_h2h' AS transaction,
no_ecash AS nomor_ecash,
IFNULL(partner_id, '') AS partner_id
FROM subscription_hist
WHERE created_date >= CURDATE() - INTERVAL 1 DAY AND
created_date < CURDATE()
ORDER BY created_date ASC;
请在下面的链接下进行演示,显示日期逻辑正常工作。