MySQL:如何在尽可能快的平等之间做出?

时间:2016-04-15 06:26:19

标签: mysql

我有一个要求,我希望在接下来的7天内从表中获取记录,这可以很容易地完成,如下所示(这只是一个示例查询)

SELECT billnumber FROM bill WHERE paiddate BETWEEN DATE(NOW()) AND DATE(DATE_ADD(NOW(), INTERVAL 7 DAY))

但这需要花费大量时间来执行(103秒),而如果我为每个日期尝试使用相同的运算符,则每个日期(0.297秒)的执行类型减少不到半秒。示例查询:

SELECT billnumber FROM bill WHERE paiddate = DATE(NOW())

以及未来6天的所有情况。这样,我每次都要为第二天执行7次查询。有没有办法在'之间制作?工作速度与平等一样快(所有7个日期查询的合并执行时间不超过2秒)?或者有更快的方法来获取下一个7天的数据吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用UNION获取唯一的广告编号或UNION ALL,但不考虑唯一性。

SELECT billnumber FROM bill WHERE paiddate = NOW()
UNION ALL
SELECT billnumber FROM bill WHERE paiddate = NOW() + INTERVAL 1 DAY
UNION ALL
SELECT billnumber FROM bill WHERE paiddate = NOW() + INTERVAL 2 DAY
UNION ALL
SELECT billnumber FROM bill WHERE paiddate = NOW() + INTERVAL 3 DAY
UNION ALL
SELECT billnumber FROM bill WHERE paiddate = NOW() + INTERVAL 4 DAY
UNION ALL
SELECT billnumber FROM bill WHERE paiddate = NOW() + INTERVAL 5 DAY
UNION ALL
SELECT billnumber FROM bill WHERE paiddate = NOW() + INTERVAL 6 DAY