有人能给我一个理由,为什么你会在 ORDER BY 子句的时间戳上使用 CONVERT_TZ() 吗?在这种情况下,时间戳将始终采用 UTC。
我在我正在使用的一段代码中找到了它,由于mysql_tzinfo_to_sql,它现在有问题,所以我想删除它。
我可以看到在其他地方使用它的原因,例如 SELECT 和 WHEN。但是有正当理由在 ORDER BY 中使用它吗?
如果它们都转换为同一时区,则转换应该出于两个原因而消失;
- 它打破了索引
- 它可能会围绕 DST 班次对错误进行排序(当时间设置回时,当转换为本地时间时,可能会在较早的时间戳之前排序较晚的 UTC 时间戳)
当然,如果您的逻辑依赖于后者,您可能希望保留它,因为它是功能更改。
不,你不应该这样做。当您按列的函数进行排序时,无法有效地使用该列上的索引。您应该在此处删除函数调用,并仅按值本身排序。如果列被索引,这可能会大大加快速度。