我有一个不断插入各种用户名的表格。我有一个用户可以加载的页面,它显示了他们发布的数据库中的最新条目。
我正在使用的查询示例: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秒时,这是不可接受的。
答案 0 :(得分:2)
尝试SELECT MAX(timestamp) FROM entry_list WHERE username = 'user'
另外,使用保留关键字作为列名称可能不是最佳选择,请尝试将timestamp
更改为insert_date
或类似的内容
答案 1 :(得分:0)
您可以向用户表last_query_id
添加字段。然后,只需在他们进行新查询时更新此字段。 last_query_id
应该指向您当前正在搜索的表中的索引(从我可以说出来的。)这种方法可以避免搜索大量记录以查找最新记录。