Mysql 需要优化时间差查询吗

Mysql 需要优化时间差查询吗,mysql,optimization,Mysql,Optimization,嗨,我有一个几乎需要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 确保在created列上有索引。然后使用 AND create

嗨,我有一个几乎需要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 

确保在
created
列上有索引。然后使用

AND created BETWEEN ? AND DATE_ADD(?, INTERVAL 20 SECOND);

对列执行计算时,不能使用索引。因此,您应该计算时间范围的末尾,然后将该列与该列进行比较。

确保在创建的
列上有索引。然后使用

AND created BETWEEN ? AND DATE_ADD(?, INTERVAL 20 SECOND);

对列执行计算时,不能使用索引。因此,您应该计算时间范围的端点,然后将该列与之进行比较。

谢谢barmar:)它减少到280ms:)@ScooterDaraf我本以为会有更大的改进。考虑提供CREATETABLE语句和查询的解释。我有其他的查询,我应该创建新的POST或OK来编辑和添加它吗?创建一个新的问题,除非它是对这个问题的一个小的补充。@ ScTyTelAAF解释[您的查询在这里];相应地编辑您的问题。谢谢barmar:)它减少到280ms:)@ScooterDaraf我本以为会有更大的改进。考虑提供CREATETABLE语句和查询的解释。我有其他的查询,我应该创建新的POST或OK来编辑和添加它吗?创建一个新的问题,除非它是对这个问题的一个小的补充。@ ScTyTelAAF解释[您的查询在这里];相应地编辑您的问题。我们还需要查看CREATETABLE语句。(我觉得我已经提到了这一点)表中只有10行吗?@RickJames很多,但也许是时候了,我们也需要看看createtable语句。(我有一种感觉,我已经提到了这一点)桌子上只有10行吗?@RickJames很多,但可能是关于时间差的