成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

使用MySQL的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹了使用MySQL的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!

屬性表(product_props)結(jié)構(gòu)如下

數(shù)據(jù)量800W以上

字段名類型說明
idintid
pn_idint屬性類型
pv_idint屬性值
product_idint產(chǎn)品ID

其中product_id與pn_id,pv_id是一對多的關(guān)系。
數(shù)據(jù)類似這樣:

product_idpn_idpv_id
109705  (型號)135 (蘋果9)
1097011    (內(nèi)存)23 (512G)
1097010    (顏色)17 (土豪金)
109708    (網(wǎng)絡(luò))6(5G)
109805135
109801124 (1024G)
109801016 (極光藍(lán))

產(chǎn)品表(product)結(jié)構(gòu)如下

數(shù)據(jù)量40W以上

字段名類型說明
product_idintproduct_id
type_idint類型id
brand_idint品牌id
model_idint型號id
statustinyint狀態(tài)

數(shù)據(jù)類似以下:

product_idtype_idbrand_idmodel_idstatus
109701(手機(jī))1(蘋果)1(Iphone8)1(正常)
109801(手機(jī))1(蘋果)1(Iphone8X)3(已售)
109811(手機(jī))1(蘋果)1(Iphone8XP)1(正常)

問題

找出型號為蘋果9同時(shí)內(nèi)存為512G,顏色為土豪金,狀態(tài)為正常產(chǎn)品總數(shù)
ps : 屬性條件可能會有超過10組。

要求

性能第一,杜絕聚合函數(shù)等

原問題的解決方案性能排行

  1. 來自 @Kamicloud的 exist方案

SELECT 
    sql_no_cache `product_id`
FROM
    `zx_tests` AS a
WHERE
    `pn_id` = 101 AND `pv_id` = 59
        AND EXISTS( SELECT 
           sql_no_cache  *
        FROM
            `zx_tests`
        WHERE
        a.product_id = product_id and
            `pn_id` = 101 AND `pv_id` = 171);

    2 組條件下 0.657,3 組 0.695,4 組 0.759,5 組 0.743 (單獨(dú)查屬性表)
  1. 來自 @Elijah_Wang的子查詢方案

SELECT `product_id` FROM `product` WHERE `pn_id` = 5 AND `pv_id` = 135 AND `product_id` IN (SELECT `product_id` FROM `product` WHERE `pn_id` = 11 AND `pv_id` = 23);

    2 組條件下 0.729,3 組 0.75,4 組 0.730,5 組 0.757 (新問題之前)

新問題之后的性能排行

  1. 來自 @Elijah_Wang的子查詢方案

    select SQL_NO_CACHE count(1) from pdi_product a join  (
        SELECT
             distinct product_id
        FROM
            `product_props` 
        WHERE
            `pn_id` = 5 
            AND `pv_id` = 127
            AND `product_id` IN ( SELECT  `product_id` FROM `product_props` WHERE `pn_id` = 11 AND `pv_id` = 22 ) 
            AND `product_id` IN ( SELECT  `product_id` FROM `product_props` WHERE `pn_id` = 10 AND `pv_id` = 18 ) 
            AND `product_id` IN ( SELECT  `product_id` FROM `product_props` WHERE `pn_id` = 8 AND `pv_id` = 6 )  
            AND `product_id` IN ( SELECT  `product_id` FROM `product_props` WHERE `pn_id` = 9 AND `pv_id` = 1 )
            ) b on a.product_id = b.product_id 
            where  a.status = 1;

耗時(shí)1.5-1.56 (執(zhí)行10次的范圍)

  • expain分析:

使用MySQL的示例分析

        select SQL_NO_CACHE count(1) from pdi_product a 
            where  a.status = 1 and a.product_id in (SELECT
             distinct product_id
        FROM
            `product_props` 
        WHERE
            `pn_id` = 5 
            AND `pv_id` = 127
            AND `product_id` IN ( SELECT  `product_id` FROM `product_props` WHERE `pn_id` = 11 AND `pv_id` = 22 ) 
            AND `product_id` IN ( SELECT  `product_id` FROM `product_props` WHERE `pn_id` = 10 AND `pv_id` = 18 ) 
            AND `product_id` IN ( SELECT  `product_id` FROM `product_props` WHERE `pn_id` = 8 AND `pv_id` = 6 )  
            AND `product_id` IN ( SELECT  `product_id` FROM `product_props` WHERE `pn_id` = 9 AND `pv_id` = 1 ))

耗時(shí)0.69-0.72(執(zhí)行10次的范圍)

  • explain分析:
    使用MySQL的示例分析

  1. 來自 @Kamicloud的 exist方案

    SELECT SQL_NO_CACHE
            count(1) 
        FROM
            product a
        WHERE
            a.STATUS = 1 
            AND a.product_id IN (
        SELECT DISTINCT
            `product_id` 
        FROM
            `product_props` AS a 
        WHERE
            a.`pn_id` = 5 
            AND a.`pv_id` = 127 
            AND EXISTS ( SELECT product_id FROM `product_props` WHERE a.product_id = product_id AND `pn_id` = 11 AND `pv_id` = 22 ) 
            AND EXISTS ( SELECT product_id FROM `product_props` WHERE a.product_id = product_id AND `pn_id` = 10 AND `pv_id` = 18 ) 
            AND EXISTS ( SELECT product_id FROM `product_props` WHERE a.product_id = product_id AND `pn_id` = 9 AND `pv_id` = 1 ) 
            AND EXISTS ( SELECT product_id FROM `product_props` WHERE a.product_id = product_id AND `pn_id` = 8 AND `pv_id` = 6 ) 
            );

耗時(shí)5.7-5.85 (執(zhí)行10次的范圍)

  • explain分析:

使用MySQL的示例分析

    SELECT SQL_NO_CACHE
        count(1) 
    FROM
        pdi_product a
        join (SELECT DISTINCT
        `product_id` 
    FROM
        `product_props` AS a 
    WHERE
        a.`pn_id` = 5 
        AND a.`pv_id` = 127 
        AND EXISTS ( SELECT product_id FROM `product_props` WHERE a.product_id = product_id AND `pn_id` = 11 AND `pv_id` = 22 ) 
        AND EXISTS ( SELECT product_id FROM `product_props` WHERE a.product_id = product_id AND `pn_id` = 10 AND `pv_id` = 18 ) 
        AND EXISTS ( SELECT product_id FROM `product_props` WHERE a.product_id = product_id AND `pn_id` = 9 AND `pv_id` = 1 ) 
        AND EXISTS ( SELECT product_id FROM `product_props` WHERE a.product_id = product_id AND `pn_id` = 8 AND `pv_id` = 6 ) ) b
    on a.product_id = b.product_id
    WHERE
        a.STATUS = 1

耗時(shí)5.7-6.0(執(zhí)行10次的范圍)

  • explain分析:

使用MySQL的示例分析


可以看到如果單純查屬性表,第一位的速度是最快的,可要查產(chǎn)品狀態(tài)后,速度反而不如子查詢。

經(jīng)explain分析,第一個(gè)子查詢速度之所以快是因?yàn)樗膕ql簡單,select_type皆為simple。

而不管是join還是exists的方式,select_type大多為DERIVED,DEPENDENT SUBQUERY。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“使用MySQL的示例分析”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

網(wǎng)站題目:使用MySQL的示例分析-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://jinyejixie.com/article42/djcihc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、做網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
阜康市| 腾冲县| 永定县| 玉屏| 宣化县| 岳普湖县| 娱乐| 喜德县| 天柱县| 宿迁市| 乌拉特前旗| 襄城县| 休宁县| 岫岩| 韶关市| 铜山县| 井陉县| 花垣县| 榆树市| 钟祥市| 灵武市| 新巴尔虎左旗| 视频| 文成县| 鹤壁市| 乐至县| 永善县| 六枝特区| 沁水县| 亳州市| 潜江市| 马尔康县| 和平区| 略阳县| 教育| 和静县| 合作市| 静宁县| 南宁市| 内乡县| 桦甸市|