<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

       

      假設在一張千萬級表中有兩個需要的字段,分別為類型ID和類型名稱,并且類型ID和類型名稱在同一條數(shù)據(jù)內是一致對應的

      如果只通過一條SQL語句的方式查詢出來,常規(guī)情況下一般只需要通過分組(group by)或者去重(distinct)來操作,實際測試分別如下:

      -- 前提是 product_id OR product_name OR product_id,product_name 字段列需要加上索引
      SELECT product_id,product_name from table1 GROUP BY product_id ;
      
      --》》》或者
      
      SELECT product_id,product_name from table1 GROUP BY product_name ;
      
      --》》》亦或者
      
      SELECT product_id,product_name from table1 GROUP BY product_id,product_name ;

      但是如上語句執(zhí)行過程中性能差的不是一點半點,具體運行時間如下

      SELECT count(1) from table1 ;
      ; > OK > 時間: 8.325s

      總測試數(shù)據(jù)量 23466238 條,且 product_id, product_name 分別建有索引,測試使用的是自己本地筆記本電腦

      看下每條語句實際的運行時間情況

      SELECT product_id from table1 GROUP BY product_id 
      > OK
      > 時間: 0.001s
      SELECT product_name from table1 GROUP BY product_id 
      > OK
      > 時間: 173.959s
      SELECT product_id,product_name from table1 GROUP BY product_id (這條查詢的才是最終需要的結果)
      > OK
      > 時間: 176.596s

      從以上結果中不難看出,只有當group by 后的字段和查詢展示字段一致時,走了索引,查詢速度極快,展示不一致時無法走索引。

      同樣的我們將 group by 后的字段更換為 product_name 以及更換語句為 distinct 方式的效果和 group by product_id 的情況是一樣的,有興趣的朋友可以自己試試看

      SELECT DISTINCT product_id from table1;
      SELECT DISTINCT product_name from table1;
      SELECT DISTINCT product_id,product_name from table1;

      另外就會有人會說為什么不用聯(lián)合索引,那我們順帶看下聯(lián)合索引下的效果(需要創(chuàng)建 product_id,product_name 的聯(lián)合索引)

      SELECT product_id,product_name from table1 GROUP BY product_id,product_name
      > OK
      > 時間: 85.269s

      但從查詢時間上看是有一定提升的,但由于我個人本地使用場景限制,聯(lián)合索引當前兩個字段的聯(lián)合索引使用有限,且這個速度依然是很不理想的

      既然聯(lián)合索引,單個分別創(chuàng)建索引都無法滿足實時快速查詢兩個字段的組合結果,那我們是否可以嘗試改變查詢方式去實現(xiàn)

      在實際優(yōu)化測試中發(fā)現(xiàn)給單語句查詢添加主鍵之后對查詢性能沒有大的影響,那么如果單從主鍵入手,先查尋到主鍵,在通過主鍵去查詢所需要的數(shù)據(jù)是否會變快,請看測試數(shù)據(jù)如下

      SELECT a.product_id,a.product_name from table1 a where a.id in (
      SELECT max(id) from table1 GROUP BY product_id
      );

       > OK
       > 時間: 77.054s

      不難看出,上邊的這個查詢語句通過改造,一定程度上已經(jīng)有了進一步的提升,但是在實際應用中還不夠,存在太大差距了

      既然表主鍵和索引字段結合有一定的提升空間,且但索引在單字段查詢時能夠異常的快,那是否可以通過兩個單字段索引和主鍵分別結合,在這個基礎上在做進一步關聯(lián),繼續(xù)往下看

      先使用單表主鍵結合測試

      SELECT max(id) id,product_id from table1 GROUP BY product_id
      > OK
      > 時間: 0.016s
      
      SELECT max(id) id,product_name from table1 GROUP BY product_name
      > OK
      > 時間: 0.009s
      單從這個結果來看,已經(jīng)超出預期很多了,最后將這兩個子查詢結合一下不就可以了,改造后的語句如下
      SELECT a.product_id b.product_name from
      (SELECT max(id) id,product_id from table1 GROUP BY product_id ) a, 
      (SELECT max(id) id,product_name from table1 GROUP BY product_name) b WHERE a.id = b.id ORDER BY a.product_id;

      > OK
      > 時間: 0.006s

      最終結論是通過主鍵和單字段索引的結合做關聯(lián)查詢是成功的,在千萬級數(shù)據(jù)表內實現(xiàn)毫秒級的查詢優(yōu)化成果是值得推薦的,最后完美收官!

      table1 
      posted on 2021-08-25 16:37  界外  閱讀(130)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 色综合视频一区二区三区| 野花社区www视频日本| 国产精品久久久久久福利| 国产蜜臀视频一区二区三区| 中文字幕亚洲男人的天堂| 亚洲国产综合自在线另类| 成人啪精品视频网站午夜| 国产一区二区av天堂热| 国产精品福利自产拍久久| 国产精品av中文字幕| 亚洲乱妇老熟女爽到高潮的片| 四虎永久免费很黄的视频| 国产精品视频午夜福利| 亚洲国产日韩a在线亚洲| 国产偷国产偷亚洲高清午夜| 少妇无套内射中出视频| 欧美成人aaa片一区国产精品| 亚洲中文在线精品国产| 免费无码AV一区二区波多野结衣| av永久免费网站在线观看| 日韩精品国产二区三区| 国产精品视频午夜福利| 日韩精品一区二区亚洲av| 国产特级毛片aaaaaa毛片| 国产午夜精品理论大片| 被黑人巨大一区二区三区| 国产愉拍91九色国产愉拍| 久热这里只有精品12| 日本不卡的一区二区三区| 国产精品成人一区二区不卡| 国产精品偷伦费观看一次 | 亚洲av日韩在线资源| 免费超爽大片黄| 人妻中文字幕精品系列| 亚洲男人AV天堂午夜在| 宅男噜噜噜66在线观看| 人妻一区二区三区人妻黄色| 亚洲人妻中文字幕一区| 久久er99热精品一区二区| 国产情侣一区二区三区| 伊人成伊人成综合网222|