上周我在服务器上运行了我的sql查询,花了一天时间才完成查询。 但是当我在localhost中尝试时,它运行得很快。
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;
我一直试图找到整个星期的问题,但我找不到解决方案。
答案 0 :(得分:1)
我能给你的唯一建议是尝试添加一个可以在WHERE
子句中使用的索引来加快速度。由于您确实在寻找特定日期的记录,created_date
上的索引可能会有很大帮助。
ALTER TABLE subscription_hist ADD INDEX c_date_idx (created_date)
MySQL不支持函数索引,因此在DATE(created_date)
子句中使用WHERE
可能无法利用索引。但是如果created_date
已经是一个日期时间列,那么我甚至看不到用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;
按照以下链接获取演示日期逻辑正常工作的演示。