带有重复子查询的mySQL select联合查询工作缓慢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有重复子查询的mySQL select联合查询工作缓慢相关的知识,希望对你有一定的参考价值。

我有一个简单的表,其中包含以ID,代码(200 000条记录)索引的价格表(价格表的ID-,商品的CODE,商品的PRICE)-最初,我使用“ LEFT JOIN”来完成它,工作缓慢,然后我使它像这样:

SELECT CODE,price FROM PRICELISTS
WHERE ID=1 AND CODE NOT IN (SELECT CODE FROM PRICELISTS WHERE ID=5)
union 
SELECT CODE,price FROM PRICELISTS WHERE id=5

IT工作更快,但还不够。有什么方法可以简化代码以使其更快?

答案

请尝试避免使用not in并使用左连接来匹配不匹配的值

    SELECT p.CODE, p.price 
    FROM PRICELISTS p
    LEFT JOIN  (
        SELECT CODE 
        FROM PRICELISTS 
        WHERE ID=5
    ) t1 on t1.code  = p.code 
    where p.id =1 
    and t1.code is null
    union 
    SELECT CODE,price 
    FROM PRICELISTS WHERE id=5

以上是关于带有重复子查询的mySQL select联合查询工作缓慢的主要内容,如果未能解决你的问题,请参考以下文章

mysql学习之路_联合查询与子查询

mysql数据库的多表查询,子查询,联合查询

MySQL 联合查询

MySQL的查询,子查询,联结查询,联合查询

带有联合的MYSQl查询失败

( 11 )MySQL中的联合查询