我的mysql数据库有一个包含数十万行的表。 每行(包括其他数据)都有用户名和时间戳。
我需要检索具有给定用户的最新时间戳的记录。
当前的暴力查询是:
SELECT * FROM tableName WHERE `user_name`="The user name" AND datetime_sent = (SELECT MAX(`datetime_sent`) FROM tableName WHERE `user_name`="The user name");
该表的索引位于user_name
和datetime_sent
。
如何才能最好地改进此查询?我必须一次运行数千个这样的查询。每个查询似乎需要1到4毫秒,我怀疑有更有效的方法来实现相同的结果。
答案 0 :(得分:2)
select * from tableName
where userName = 'username'
order by datetime_sent desc
limit 1