我有一个经常被插入的表,其中包含各种用户名。我有一个页面,用户可以加载,其中显示了数据库中的最新条目,由他们发布。
我使用的查询示例: SELECT timestamp FROM entry_list WHERE username='user‘ORDER BY entry_id DESC LIMIT 1
表中有两列索引:用户名、时间戳。根据EXPLAIN查询使用此索引,并提供以下附加信息:
select_type:简单
类型: ref
key_len: 34
参考:常量
行数: 5654
额外:使用where;使用索引;使用文件排序
如何优化我的查询?对于单个用户(0.2-0.4秒)来说,这是相当快的,但一些帐户一次加载5个、10个甚至20个不同用户的信息。即使0.2~0.4似乎也有点长,而且当它最终导致页面加载速度降低4-8秒时,这是不可接受的。
发布于 2011-05-16 01:02:49
试试SELECT MAX(timestamp) FROM entry_list WHERE username = 'user'
此外,使用保留关键字作为列名可能不是最好的主意,请尝试将timestamp更改为insert_date或类似的名称
发布于 2011-05-16 01:00:03
您可以向用户表last_query_id添加一个字段。然后,当您进行新查询时,只需更新此字段即可。last_query_id应该指向您当前正在搜索的表中的索引(据我所知)。这种方法避免了通过搜索大量记录来查找最新的记录。
https://stackoverflow.com/questions/6009855
复制相似问题