我有以下SQL查询,想知道是否有办法优化查询。
SELECT * FROM LogEntry WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(updateTime) > 10;
在updateTime上添加索引可以提高性能,可以采取更多措施来提高性能
答案 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必须是主键的一部分。