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.*含义不一样

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容