MySQL的簡單優(yōu)化

關(guān)于MySQL的IN語句改為JION,確實(shí)在性能上會(huì)有很大的提升

最開始是很多個(gè) IN來查詢的,但是通過IN來查詢速度明顯很慢,因?yàn)槊總€(gè)IN中的select中的數(shù)量都特別的大,導(dǎo)致一次簡單的查詢需要去遍歷一個(gè)很大數(shù)量的表,導(dǎo)致速度特別的慢。

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語句。

今天拿到一個(gè)需求,有300多萬的數(shù)據(jù) 需要在數(shù)據(jù)上完成去重。這個(gè)我表示壓力很大 因?yàn)檎娴暮苌偈謱慡QL,一個(gè)上午在別人的提示下算是完成了。記錄一下。

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;

轉(zhuǎn)存到另一張表。這個(gè)的效率還是高的。

中間出了一個(gè)小問題。在使用右聯(lián)接的時(shí)候select *select c.*含義不一樣

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容