SQL 优化

标签 sql mysql optimization sql-optimization

如何优化这个?

SELECT e.attr_id, e.sku, a.value

FROM product_attr AS e, product_attr_text AS a

WHERE e.attr_id = a.attr_id
AND value
IN (
    SELECT value
    FROM product_attr_text 
    WHERE attribute_id = (
        SELECT attribute_id
        FROM eav_attr 
        WHERE attribute_code = 'similar_prod_id' 
    ) 
    AND value != ''

    GROUP BY value
    HAVING (COUNT( value ) > 1 )
)

最佳答案

SELECT  e.attr_id, e.sku, a.value
FROM    (
        SELECT  pat.value
        FROM    eav_attr ea
        JOIN    product_attr_text pat
        ON      pat.attribute_id = ea.attribute_id
        WHERE   ea.attribute_code = 'similar_prod_id'
                AND value <> ''
        GROUP BY
                value
        HAVING  COUNT(*) > 1
        ) q
JOIN    product_attr_text AS a
ON      a.value = q.value
JOIN    product_attr AS e
ON      e.attr_id  = a.attr_id

创建索引:

 eav_attr (attribute_code)
 product_attr_text (attribute_id, value)
 product_attr_text (value)
 product_attr (attr_id)

关于SQL 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4042721/

相关文章:

mysql - Sql 每个左表结果从右表返回一行

php - SQL索引性能?

php - 在 MySQL 中存储用户通知的最佳方式是什么?

haskell - 为什么这个程序似乎没有正确融合?

optimization - MVC4 捆绑策略

sql - PostgreSQL - 使用 LIMIT INNER JOIN 两个表

mysql - 不同表中的重复行以及与该 ID 相关的所有内容

Mysql-> rand() 之后分组

mysql - 在 Slick 中表达 SQL IF ELSE

Python 在处理大 float 和整数时防止溢出错误