MySQL上的SQL查询优化

时间:2017-10-12 11:30:43

标签: mysql sql database-performance

我有以下SQL查询,想知道是否有办法优化查询。

SELECT * FROM LogEntry WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(updateTime) > 10;

在updateTime上添加索引可以提高性能,可以采取更多措施来提高性能

3 个答案:

答案 0 :(得分:5)

是。您需要考虑一种删除列上的函数的方法。所以,如果我有正确的逻辑:

SELECT le.*
FROM LogEntry le
WHERE le.updateTime < NOW() - interval 10 second;

然后可以利用LogEntry(updateTime)上的索引。

有充分的理由明确列出要返回的列。这对性能影响很小 - 除非行大小很大。

答案 1 :(得分:0)

我要做的第一件事就是删除你的select *并选择特定的列

答案 2 :(得分:0)

除了优化请求之外,您还可以考虑对表进行分区。 例如,您可以按日对updateTime上的表LogEntry进行分区。如果您的表中有大量数据,它会大大加快您的请求。

注意:要在updateTime上对表进行分区,updateTime必须是主键的一部分。