SQL查询在服务器

时间:2017-05-02 03:50:45

标签: mysql

上周我在服务器上运行了我的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;

我一直试图找到整个星期的问题,但我找不到解决方案。

1 个答案:

答案 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;

按照以下链接获取演示日期逻辑正常工作的演示。

Rextester