MySQL - 根据用户名查询最近的输入 - 极慢

3

我有一个表格,不断插入各种用户名。用户可以加载一个页面,该页面显示他们发布的数据库中最新条目。

我使用的查询示例:SELECT timestamp FROM entry_list WHERE username='user' ORDER BY entry_id DESC LIMIT 1

表格中有一个两列索引:username、timestamp。根据EXPLAIN查询结果,这个索引正在被使用,以下是其他信息:

select_type: SIMPLE
type: ref
key_len: 34
ref: const
rows: 5654
Extra: Using where; Using index; Using filesort

如何优化我的查询?对于单个用户来说,速度相当快(0.2~0.4秒),但某些帐户一次加载5、10甚至20个不同用户的信息。即使0.2~0.4秒看起来有点长,但当它导致页面加载变慢4-8秒时,这是无法接受的。

2个回答

2

尝试使用SELECT MAX(timestamp) FROM entry_list WHERE username = 'user'

另外,使用保留关键字作为列名可能不是最好的选择,请尝试将timestamp更改为insert_date或类似名称。


谢谢!这个更改使得加载一个跟踪20个账户的用户只需要不到0.01秒的时间! - Michael Marsee

0
你可以在用户表中添加一个字段last_query_id。然后当他们进行新的查询时,只需更新此字段即可。last_query_id应该指向您当前正在搜索的表中的索引(从我所看到的情况来看)。这种方法避免了搜索大量记录以查找最近记录的情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接