MySQL - 添加多个 ORDER BY 后页面加载缓慢

标签 mysql sql-order-by performance

由于某种原因,在添加了 2 个 ORDER BY 之后,我的查询变得非常慢。有人可以帮我解决吗?我确实需要使用以下 ORDER BY 子句:

ORDER BY candidates.user_id DESC, candidates.usr_type ASC, all_users.user_id DESC

最佳答案

主要问题是您混合了排序顺序,这在 MySQL 中非常慢。
ORDER BY 所有 ASC 或 DESC,但不要混合使用。

一种解决方案是为 usr_type 定义一个以相反顺序运行的额外复制字段。 像这样

Example
-------------------------------
id     usr_type    alt_usr_type

1      1           99
2      2           98
3      1           99
4      5           95

现在您可以将选择定义为

ORDER BY candidates.user_id DESC
       , candidates.alt_usr_type DESC
       , all_users.user_id DESC

而且您的查询将运行得更快。

参见:http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html

关于MySQL - 添加多个 ORDER BY 后页面加载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7491019/

相关文章:

php - BBP : How to secure database ids in a messaging system?

performance - 小数相加比大数相加快吗?

java - 局部变量还是重复调用?

php & mysql 将非编码转换为 unicode

php - Codeigniter MySQL 将结果分组为多维数组

php - 选择包含确切字符串的列

performance - 嵌套 ng-repeat 性能

mysql - 使用 mySQL 按字母顺序排列美国各州

c# - 如何使用 O(n) 中的 LINQ 根据特定顺序查找第一项?

MySQL group by 具有多个选择规则的多列的排序和优先级