MySQL的简单优化

关于MySQL的IN语句改为JION,确实在性能上会有很大的提升

最开始是很多个 IN来查询的,但是通过IN来查询速度明显很慢,因为每个IN中的select中的数量都特别的大,导致一次简单的查询需要去遍历一个很大数量的表,导致速度特别的慢。

SELECT
        P.ID,
        P.TITLE,
        P.IMG_1,
        P.SALE_UNIT_E_NAME,
        P.SHOP_ID,
        P.SELL_MODE,
        P.SALE_UNIT_E_NAME,
        P.MOQ
    FROM
        PA_COMMODITY P
    RIGHT JOIN (
        SELECT
            S.COMMODITY_ID
        FROM
            PA_SHOP_CATEGORY C
        LEFT JOIN PA_SHOP_CATEGORY_COMMODITY S ON c.ID = S.CATEGORY_ID
        WHERE
            C.QUOTE_ID = #{id} OR C.ID=#{id} LIMIT 0,12
    ) CI ON P.ID = CI.COMMODITY_ID
    WHERE
        P.IS_DELETED = 'n'
    AND P.SUBMIT_STATUS = 'RELEASE'

这是修改后的SQL语句。

今天拿到一个需求,有300多万的数据 需要在数据上完成去重。这个我表示压力很大 因为真的很少手写SQL,一个上午在别人的提示下算是完成了。记录一下。

INSERT INTO
 PA_ATOBO_COMPANY2 
 SELECT c.* from PA_ATOBO_COMPANY c
  RIGHT JOIN
   (select b.id from
    (select max(a.id) as id from PA_ATOBO_COMPANY a group by a.COMPANY_ATOBO_WEB_SITE
    ) b 
  ) d on d.id = c.id;

转存到另一张表。这个的效率还是高的。

中间出了一个小问题。在使用右联接的时候select *select c.*含义不一样

你可能感兴趣的:(MySQL的简单优化)