连接表中的 mySQL ORDER BY

标签 mysql sql-order-by filesort

好的,所以我有以下架构和查询,由于 ORDER BY,它非常慢(使用真实数据时):

http://sqlfiddle.com/#!2/5e7bb/10

根据 mysql man :“您正在连接许多表,并且 ORDER BY 中的列并不全部来自用于检索行的第一个非常量表。(这是 EXPLAIN 输出中的第一个表,它不有一个 const 连接类型。)“

但我仍然需要按该列排序。我需要怎么做?

最佳答案

更新:自从 fiddle 更新后:

SELECT
    cpa.product_id, 
    cp.product_internal_ref, 
    cp.product_name, 
    cpa.product_sale_price, 
    cpa.is_product_service, 
    cpa.product_service_price
FROM 
    catalog_products_attributes cpa
JOIN
    catalog_products cp ON cp.product_id = cpa.product_id 
WHERE
    cpa.product_id IN (
        SELECT
            product_id
        FROM 
            catalog_products_categories
        WHERE
            category_id = 41 
    )
ORDER BY 
    cpa.product_service_price DESC 

关于连接表中的 mySQL ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786940/

相关文章:

mysql select from table 1 join and order by table 2 优化文件排序

mysql - 检索表的最后一行时出错

jquery - 如何查询 MYSQL 表以获取总体和过去一年内列出现的计数?

php - MySQL - 如何执行大查询?

MySQL 按另一个表的最后一行排序

mysql - 提高性能或重新设计 'greatest-n-per-group' mysql 查询

mysql - 由于索引无效而避免文件排序..?

mysql - 读取 csv 时出现内存错误

mysql - Order by multiple OR Mysql

Mysql:使用最大的时间戳排序