【问题标题】:MySQL - Query most recent input based on username - VERY SLOWMySQL - 根据用户名查询最近的输入 - 非常慢
【发布时间】:2011-05-15 16:56:51
【问题描述】:

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

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

表中有一个 2 列索引:用户名、时间戳。根据 EXPLAIN 查询使用此索引,并提供以下附加信息:

select_type:简单
类型:参考
key_len: 34
参考:常量
行数:5654
额外:使用where;使用索引;使用文件排序

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

【问题讨论】:

    标签: php mysql indexing


    【解决方案1】:

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

    另外,使用保留关键字作为列名可能不是最好的主意,尝试将 timestamp 更改为 insert_date 或类似的东西

    【讨论】:

    • 谢谢!此更改使其在不到 0.01 秒的时间内加载了一个跟踪 20 个帐户的用户!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 2020-08-14
      相关资源
      最近更新 更多