嗨,我的查询时间很少,几乎需要400毫秒。
这是我的查询
SELECT id, `from`
FROM messages
WHERE `to` = ?
AND `to_viewed` = '0'
AND `to_deleted` = '0'
AND TIMESTAMPDIFF(SECOND,created,?)< 20 AND TIMESTAMPDIFF(SECOND,created,?)>= 0
我该如何优化呢?
obs我没有想法。
编辑以显示我的解释
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE messages ALL created NULL NULL NULL 10 Using where
最佳答案
确保在created
列上有索引。然后使用
AND created BETWEEN ? AND DATE_ADD(?, INTERVAL 20 SECOND);
在列上执行计算时,不能使用索引。因此,您应该计算时间范围的终点,然后将其与该范围进行比较。