sql MySQL 查询优化

sql query optimisation on MySQL

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

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

在 updateTime 上添加索引会提高性能吗?可以做更多的事情来提高性能

我要做的第一件事是删除您的 select * 和 select 特定列

是的。你需要想办法去掉列上的函数。所以如果我的逻辑正确:

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

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

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

除了请求的优化之外,您可能会考虑对您的 table 进行分区。 例如,您可以按天对 updateTime 上的 table LogEntry 进行分区。如果您的 table.

中有大量数据,它会大大加快您的请求速度

注意:要根据 updateTime 对 table 进行分区,updateTime 必须是主键的一部分。