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

时间:2011-05-15 16:56:51

标签: php mysql indexing

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

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

表中有一个2列索引:username,timestamp。根据EXPLAIN查询使用此索引,并提供以下附加信息:

select_type:SIMPLE
类型:参考
key_len:34
ref:const
行:5654
额外:使用在哪里;使用索引;使用filesort

如何优化查询?单个用户(0.2~0.4秒)的速度相当快,但有些帐户会同时为5个,10个甚至20个不同的用户加载此信息。即使0.2~0.4似乎有点长,当它最终减慢页面加载速度4-8秒时,这是不可接受的。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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