【问题标题】:How to speed up select statement which has a count command如何加快具有计数命令的选择语句
【发布时间】:2014-03-13 13:10:55
【问题描述】:

我正在使用 Mysql5.x,有一个用户的 db 表,其中包含一个名为 fld_experience 的整数字段。顾名思义,它保存了用户的经验,我想在整个列表中获取用户的顺序(排名),因此我将能够在整个表中显示用户的排名。由于其他用户的体验随时可能发生变化,我无法将排名存储为字段,必须按需计算。

这是我得到用户顺序的sql语句

SELECT COUNT( fld_experience ) + 1 
FROM tbl_users 
WHERE fld_experience > ( SELECT fld_experience 
                         FROM tbl_users 
                          WHERE fld_user_id = ?) 

我想加快这个请求,我该怎么做? 我真的想知道索引fld_experience 是否可行。

【问题讨论】:

    标签: mysql sql database count


    【解决方案1】:
    SELECT COUNT( fld_experience ) + 1 
    FROM tbl_users, ( SELECT fld_experience 
                             FROM tbl_users 
                              WHERE fld_user_id = ?) selected_user
    WHERE fld_experience > selected_user.fld_experience  
    

    【讨论】:

    • 为什么会更快?
    • 它将只执行一次,而不是 WHERE 中的每一行
    • 索引怎么样,你认为使用 fld_experience 索引会更快吗?
    • 为 fld_experience 列添加索引。但我会检查当前的查询。运行,看看它有多快,然后决定是否需要更快。
    • 这里是错误信息...错误代码:1052。字段列表中的“fld_experience”列不明确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多