请考虑以下示例查询
SELECT * FROM subscriber WHERE subscription_date>DATE(NOW()-INTERVAL 10 DAY)
我的问题是,如果订阅者表中有100条记录,那么将调用函数NOW()
和DATE()
多少次?是否会对这些函数进行评估以便与每一行进行比较,还是在查询开始时只对它们进行一次评估?
答案 0 :(得分:1)
它将被调用一次。 MySQL首先尝试评估WHERE
子句,因此在内部将其转换为静态值。
BTW:通过使用NOW()
,您的查询将不会缓存在MySQL中,因此当几秒钟后再次调用此查询时,它必须再次执行。所以最好使用DATE('2012-01-05 04:00:00'-INTERVAL 10 DAY)