【发布时间】:2014-04-02 23:55:26
【问题描述】:
我有一个类似于以下的 MySQL 查询:
SELECT `col1`, `col2`
FROM `mytable`
WHERE `col3` = "stuff"
ORDER BY `hour_col` DESC, `minute_col` DESC, `second_col` DESC
LIMIT 1
但由于我只需要返回的第一行,因此似乎有一种更有效的方法可以做到这一点。有什么想法吗?
此外,小时、分钟和秒列需要保持单独的列(换句话说,我不能将它们存储为单个 Time 数据类型)。
【问题讨论】:
-
这有什么低效的?顺便说一句,你可以只做
LIMIT 1。当您为LIMIT指定一个参数时,该值指定从结果集开头返回的行数。 -
我认为仅按顺序进行操作似乎效率低下,因为我只需要一行。
-
如果您不执行
ORDER BY,则无法保证您将始终获得相同的行。 stackoverflow.com/a/6314893/1086938 -
正确。我真的只是想看看是否有人认为有更好的方法可以获得相同的结果。
-
索引在哪里?解释计划?为什么数据没有归一化?
标签: mysql performance