我有一个 MySQL 查询类似于:
SELECT `col1`, `col2`
FROM `mytable`
WHERE `col3` = "stuff"
ORDER BY `hour_col` DESC, `minute_col` DESC, `second_col` DESC
LIMIT 1
但由于我只需要返回的第一行,因此似乎有更有效的方法来执行此操作。有什么想法吗?
此外,小时、分钟和秒列需要保持单独的列(换句话说,我不能将它们存储为单一时间数据类型)。
最佳答案
鉴于您的局限性,我认为除了跨 col_3、hour_col、minute_col、second_col、col1、col2 放置复合索引之外,这不会变得更有效。
CREATE INDEX covering_index
ON mytable (col_3, hour_col, minute_col,second_col, col1, col2);
此索引有助于避免在主表中进行点查找,因为它会排序并返回您需要的值。
关于MySQL查询性能提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22121278/