FROM_UNIXTIME会严重影响这样的查询的性能:
(
(calltasks.task_dueDate = '".$date."') # Tasks of this date
OR
(calltasks.task_dueDate < '".$date."' AND calltasks.task_status = 'scheduled') # Tasks still available on this date
OR
(FROM_UNIXTIME(calltasks.task_executionTime, '%Y-%m-%d') = '".$date."') # Tasks finished this date
)
或者我应该没事呢?
答案 0 :(得分:2)
不是将UNIX时间转换为格式化字符串,而是比较那些(就像您现在的那样),最好使用UNIX_TIMESTAMP()
将$date
变量转换为UNIX时间,然后再比较整数(检查差异不超过24小时)。整数比较总是比字符串比较快:
(calltasks.task_executionTime - UNIX_TIMESTAMP('$date')) BETWEEN 0 AND 86400
或者,您可能会发现在您调用此查询的语言中,您已经在某个地方提供了$date
的UNIX时间戳值:例如,PHP将日期存储为UNIX时间戳。
请注意,如果以这种方式将$date
插入到查询中,则{em} <} 如果有任何疑问,你应该使用准备好的声明:如果你不知道为什么或它们是什么,请阅读Bobby Tables。