精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL中的SQL優(yōu)化建議那么多,該如何有的放矢

數(shù)據(jù)庫(kù) MySQL
今天早上看到同事的一個(gè)優(yōu)化需求,優(yōu)化的時(shí)間其實(shí)不多,但是對(duì)于這條SQL的優(yōu)化思考了很多,希望有一些參考。

 今天早上看到同事的一個(gè)優(yōu)化需求,優(yōu)化的時(shí)間其實(shí)不多,但是對(duì)于這條SQL的優(yōu)化思考了很多,希望有一些參考。

[[282433]]

業(yè)務(wù)同學(xué)提供的SQL如下:

  1. SELECT  
  2. b.order_id 
  3. FROM 
  4. SELECT 
  5. a.order_id, 
  6. a.order_time AS create_time 
  7. FROM 
  8. trade_order a 
  9. WHERE 
  10. a.user_id = 12345678 
  11. 。。。。。。 
  12. AND a.deleted = 0 
  13. UNION 
  14. SELECT 
  15. v.order_id, 
  16. v.create_time 
  17. FROM 
  18. virtual_order v 
  19. WHERE 
  20. v.user_id = 12345678 
  21. 。。。。 
  22. ORDER BY 
  23. order_id DESC 
  24. AS b 
  25. LIMIT 0, 
  26.  10; 

根據(jù)反饋,這條SQL的執(zhí)行時(shí)長(zhǎng)在200毫秒,在壓測(cè)情況下會(huì)到500毫秒左右,從業(yè)務(wù)層面來(lái)看,目前是不滿足需求的,想看看我們有沒有優(yōu)化的建議。

第一印象這條SQL執(zhí)行時(shí)長(zhǎng)200~500毫秒,要優(yōu)化好像可打的牌不多啊,如果要想得到一個(gè)可接受的基準(zhǔn)值,當(dāng)然反饋會(huì)是越快越好。所以從這個(gè)角度來(lái)看,我們不妨按照毫秒級(jí)優(yōu)化的標(biāo)準(zhǔn)來(lái)看,這條SQL需要做哪些補(bǔ)充的工作。

首先通過(guò)SQL看下邏輯情況,整體的邏輯是按照用戶id去查詢兩個(gè)數(shù)據(jù)源(trade_order和virtual_order),從兩個(gè)數(shù)據(jù)源查詢出10條單號(hào)數(shù)據(jù)返回。這個(gè)用戶在兩個(gè)數(shù)據(jù)源中可能有單號(hào),也可能沒有,只要有匹配的就返回,累計(jì)返回10條,看起來(lái)是為了去重才選擇了union的組合方式。

先不看表結(jié)構(gòu)信息,我大體有了如下的建議:

  1. union的模式更建議采用union all,兩個(gè)數(shù)據(jù)源存在數(shù)據(jù)重合應(yīng)該是不合理的。
  2. 查詢語(yǔ)句里面使用了order_time但是數(shù)據(jù)返回壓根沒有用到,建議去掉
  3. SQL層面承載了太多的數(shù)據(jù)處理壓力,比如多數(shù)據(jù)源,去重和過(guò)濾,分頁(yè),是不是可以做下精簡(jiǎn)。

當(dāng)然到了這里,和業(yè)務(wù)的需求就產(chǎn)生了脫節(jié),這就屬于那種看啥都不順眼的狀態(tài),總想找出點(diǎn)問(wèn)題來(lái),而且對(duì)于業(yè)務(wù)同學(xué)來(lái)說(shuō),哪怕十個(gè)八個(gè)需求,你得有一個(gè)需求的收益更高,他們采用其他需求的可能性才越大,否則就是不作為了。

所以到了這里,我們開始做下分析,要優(yōu)化SQL不看看執(zhí)行計(jì)劃是不過(guò)關(guān)的,在執(zhí)行前,我的大體感覺表數(shù)據(jù)量很大,應(yīng)該是生成了派生表,然后在數(shù)據(jù)去重過(guò)濾層面的消耗比較大,而兩個(gè)子查詢來(lái)說(shuō),返回的結(jié)果集應(yīng)該很少。 預(yù)測(cè)的執(zhí)行情況是:

1)子查詢trade_order應(yīng)該很快,毫米級(jí)響應(yīng)

2)子查詢virtual_order應(yīng)該也很快,但是最后有一個(gè)order by操作,可能代價(jià)略高

3)union的去重過(guò)濾代價(jià)相對(duì)較大,涉及到兩個(gè)結(jié)果集的合并,如果返回結(jié)果較多,可能是瓶頸

從執(zhí)行結(jié)果來(lái)看,讓我有些意外,其中virtual_order的返回結(jié)果竟然有40多萬(wàn)行,相當(dāng)于直接走了全表掃描。

 

而其他的部分也會(huì)收到相關(guān)影響,所以后續(xù)的處理都會(huì)受到影響。

為了快速定位問(wèn)題,我把兩個(gè)子查詢拆開單獨(dú)執(zhí)行,查看執(zhí)行計(jì)劃,這是分析瓶頸最快的一種處理思路。

  1. >>explain SELECT 
  2.     -> v.order_id, 
  3.     -> v.create_time 
  4.     -> FROM 
  5.     -> virtual_order v 
  6.     -> WHERE 
  7.     -> v.user_id = 12345678 
  8.     。。。; 

執(zhí)行計(jì)劃如下:

 

可以看到是直接走了全表掃描,這是一個(gè)基礎(chǔ)需求,不會(huì)業(yè)務(wù)同學(xué)漏了索引吧,然后查看表結(jié)構(gòu):

  1. CREATE TABLE `virtual_order` ( 
  2.   `order_id` varchar(255) NOT NULL COMMENT '訂單ID'
  3. 。。。 
  4.   `user_id` varchar(255) DEFAULT NULL COMMENT '用戶ID'
  5. 。。。 
  6.   `refund` tinyint(3) DEFAULT NULL COMMENT ' 是否退款(1:無(wú),2:是)'
  7.   `atc_pay_status` int(3) NOT NULL DEFAULT '0' COMMENT '支付狀態(tài)'
  8. 。。。 
  9.   PRIMARY KEY (`order_id`), 
  10.   KEY `order_status` (`order_status`), 
  11.   KEY `user_id` (`user_id`), 
  12.   KEY `prepaid_account` (`prepaid_account`) 
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

發(fā)現(xiàn)user_id是走了索引的,那么問(wèn)題來(lái)了,user_id既然是索引,但是為什么SQL語(yǔ)句中依然走了全表掃描呢?

此處思考10秒鐘,繼續(xù)往下看。

其實(shí)這個(gè)時(shí)候問(wèn)題的邊界都很清晰了,SQL語(yǔ)句很簡(jiǎn)單,索引也存在,走了全表掃描,在MySQL中可以暫時(shí)排除直方圖的影響,目前在5.7版本中還不存在直方圖的特性,那么結(jié)果只有一個(gè):字段的類型產(chǎn)生了隱式類型轉(zhuǎn)換。

這個(gè)部分可以參考這篇的一篇文章

MySQL中需要重視的隱式轉(zhuǎn)換

比如初始化語(yǔ)句如下:

  1. create table test(id int primary key,name varchar(20) ,key idx_name(name)); 
  2. insert into test values(1,'10'),(2,'20'); 

然后我們使用如下的兩條語(yǔ)句進(jìn)行執(zhí)行計(jì)劃的對(duì)比測(cè)試。

  1. explain select * from test where name=20; 
  2. explain select * from test where  name=’20’; 

在name列為字符類型時(shí),得到的執(zhí)行計(jì)劃列表如下:

可以很明顯的看到,在name為字符串類型時(shí),如果where條件為name=20,則執(zhí)行全索引掃描,查看warning信息會(huì)明確提示:

Message: Cannot use range access on index 'idx_name' due to type or collation conversion on field 'name'

所以此處的問(wèn)題也顯而易見了。

修改了子查詢的條件為字符后,整個(gè)SQL的執(zhí)行效率就立馬好多了。

使用sql_no_cache的方式測(cè)試。

SQL修改前性能:

  1. +-----------------------+ 
  2.  
  3. rows in set (0.27 sec) 
  4.  
  5. 修改后性能: 
  6.  
  7. +-----------------------+ 
  8.  
  9. rows in set (0.00 sec) 

然后再次查看執(zhí)行計(jì)劃,就都規(guī)規(guī)矩矩了,這樣我們就解決了瓶頸問(wèn)題,而那些規(guī)范,更好的改進(jìn)就可以逐步展開了,而從建議的角度來(lái)看,采用的概率也會(huì)高一些。

 

當(dāng)然在這個(gè)基礎(chǔ)上確實(shí)有一些補(bǔ)充的建議,在定位瓶頸之后也可以攤開來(lái)說(shuō)了。

優(yōu)化不是一錘子買賣,在這個(gè)基礎(chǔ)上,也發(fā)現(xiàn)了一些其他的問(wèn)題,可以看下這個(gè)表的表結(jié)構(gòu)信息,其實(shí)能夠發(fā)現(xiàn)一些設(shè)計(jì)上的小問(wèn)題。

1) 表字段的字符型基本都是varchar(255),需要盡可能避免這種使用習(xí)慣,對(duì)于存儲(chǔ)性能的開銷會(huì)有顯著影響

2)使用的int類型 int(3),這種使用對(duì)于int還是存儲(chǔ)4個(gè)字節(jié),但是有限范圍大大減少,可以考慮更小的數(shù)值類型

3)表的索引比較松散,可以根據(jù)業(yè)務(wù)模型創(chuàng)建復(fù)合索引,比如user_id和status的結(jié)合場(chǎng)景更多,應(yīng)該創(chuàng)建的是(user_id,status)的復(fù)合索引

責(zé)任編輯:武曉燕 來(lái)源: 楊建榮的學(xué)習(xí)筆記
相關(guān)推薦

2021-06-07 10:05:56

性能優(yōu)化Kafka

2012-08-13 14:15:53

廣聯(lián)達(dá)建筑信息化

2009-06-23 09:43:00

2018-03-27 08:46:01

數(shù)據(jù)庫(kù)NoSQLredis

2020-04-24 08:15:51

代碼 if else數(shù)組

2009-04-24 10:24:12

網(wǎng)絡(luò)

2022-08-16 15:20:12

微服務(wù)IT運(yùn)維

2020-07-13 08:40:21

BAT模具設(shè)計(jì)

2025-08-27 01:33:00

2013-06-17 10:45:34

2019-12-02 14:22:01

浪費(fèi)云計(jì)算支出

2020-11-02 07:05:54

虛擬內(nèi)存Go

2020-11-23 11:40:35

MySQSQL數(shù)據(jù)庫(kù)

2019-10-08 14:40:53

Java線程

2021-02-21 08:48:19

技術(shù)升職程序員

2020-03-31 10:58:38

2011-12-31 14:47:10

Web App

2015-09-29 10:12:10

2015-06-05 10:17:01

老羅創(chuàng)業(yè)不太成功

2024-05-27 00:30:00

NumPyPython開源庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久精品一区二区三区不卡 | 国产精品扒开腿做爽爽| 国产传媒av在线| 久久久噜噜噜久久中文字幕色伊伊| 国产精品久久久久999| 一本在线免费视频| 国产一区二区三区亚洲| 色综合天天做天天爱| 一区二区高清视频| 人妻丰满熟妇av无码区hd| 日韩主播视频在线| 欧美精品xxx| 特黄一区二区三区| 真实原创一区二区影院| 欧美放荡的少妇| 久久国产成人精品国产成人亚洲 | 久久久久久久久久美女| 51午夜精品| 波多野结衣av无码| 136国产福利精品导航网址| 一区二区av在线| 91精品人妻一区二区三区四区| 激情亚洲影院在线观看| 亚洲午夜精品在线| 在线观看成人免费| fc2在线中文字幕| 99riav久久精品riav| 91九色偷拍| 国产又黄又粗又硬| 日本成人中文字幕在线视频 | 日韩大尺度黄色| 亚洲国产精品天堂| 视色,视色影院,视色影库,视色网| 国外av在线| 97aⅴ精品视频一二三区| 91视频免费进入| 国产精品丝袜黑色高跟鞋| 日韩精品电影在线观看| 91精品国产91久久久| 欧美成人精品欧美一| 911精品美国片911久久久| 在线观看亚洲区| 青青草视频成人| 久久狠狠久久| 亚洲国产一区自拍| 妖精视频一区二区| 成人av地址| 欧美大胆人体bbbb| 国产吃瓜黑料一区二区| 深夜福利一区| 亚洲第一在线视频| 欧产日产国产精品98| 91久久偷偷做嫩草影院电| 日韩视频免费观看高清完整版 | 国产欧美高清视频在线| 亚洲精品视频网上网址在线观看| 亚洲国产欧美视频| 一区二区三区视频免费观看| 日韩精品极品毛片系列视频| 波多野结衣视频播放| 亚洲调教一区| 在线视频欧美性高潮| 亚洲天堂岛国片| 久久一区二区三区电影| 日韩在线观看免费全集电视剧网站| 黄色av片三级三级三级免费看| 手机在线一区二区三区| 不用播放器成人网| 精品深夜av无码一区二区老年| 亚洲人体大胆视频| 日本亚洲欧洲色α| 国产又粗又大又爽视频| 国产传媒一区在线| 成人精品一二区| 头脑特工队2在线播放| 久久免费精品国产久精品久久久久| 欧美一区二区三区四区五区六区| lutube成人福利在线观看| 亚洲人妖av一区二区| 国产成人一二三区| 综合日韩av| 欧美精品v日韩精品v韩国精品v| 亚洲日本黄色片| 久久久久观看| 在线播放日韩av| 欧美日韩在线视频免费播放| 国产精品久久777777毛茸茸| 国产精品免费一区| 超碰在线播放97| 久久婷婷色综合| 黄色一级视频播放| 亚洲永久av| 91精品国产黑色紧身裤美女| 日韩精品人妻中文字幕有码| 日韩理论在线| 国内精品小视频在线观看| 欧美国产一级片| 国产999精品久久| 日韩亚洲一区在线播放| 在线观看操人| 欧美性xxxxxxxx| 国产a√精品区二区三区四区| 九一亚洲精品| 欧美高跟鞋交xxxxhd| 午夜一区二区三区四区| 国产成人超碰人人澡人人澡| 日本在线成人一区二区| 暖暖在线中文免费日本| 欧美日韩专区在线| 少妇一级淫免费观看| 国产精品7m凸凹视频分类| 91地址最新发布| 99久久精品国产色欲| 国产香蕉久久精品综合网| 国产一线二线三线女| 欧美美女被草| 国产一区二区三区18| 精品在线视频免费观看| 国产在线麻豆精品观看| 秋霞毛片久久久久久久久| 久久香蕉一区| 欧美成人一区二区三区在线观看| xxxxx99| 久久综合狠狠| 黑人巨大精品欧美一区二区小视频| 精品自拍一区| 欧美日韩一级片网站| 高潮毛片无遮挡| 国产亚洲一区在线| 国内外成人免费视频| 视频在线这里都是精品| 日韩一区二区免费在线电影| 特级西西人体高清大胆| 日本不卡视频在线| 日韩欧美亚洲日产国产| 亚洲精品动漫| 亚洲开心激情网| 国产成人精品片| 成人午夜私人影院| 日韩精品一区二区在线视频| 欧美久久亚洲| 精品中文字幕在线2019| 亚洲av无码专区在线| 亚洲美腿欧美偷拍| 亚洲天堂一区二区在线观看| 午夜av一区| 亚洲自拍欧美色图| 四虎av在线| 亚洲成av人乱码色午夜| 精品在线免费观看视频| www.欧美.com| 丝袜老师办公室里做好紧好爽 | 欧美色网在线| 国产亚洲xxx| 黄色网址中文字幕| 国产精品夫妻自拍| 三日本三级少妇三级99| 国产在线不卡| 久久久久久久久久久久久久一区 | 日韩精品一区国产麻豆| 国产真实乱人偷精品视频| 不卡一区二区三区四区| 久久精品免费一区二区| 国产一区二区亚洲| 成人福利在线观看| 在线中文免费视频| 日韩av在线免播放器| 国产免费一区二区三区四区五区| 国产日韩精品久久久| 在线观看免费视频高清游戏推荐| 午夜精品视频一区二区三区在线看| 亚洲一区二区三区成人在线视频精品| 日本片在线观看| 日韩精品在线看| 中文字幕欧美人妻精品一区蜜臀| 亚洲色图欧洲色图| 好吊一区二区三区视频| 秋霞国产午夜精品免费视频| 一区二区三区四区五区精品| 伊人久久影院| 国产精品电影观看| 黄色一级片在线观看| 亚洲成人av在线播放| 成人小视频在线播放| 亚洲精品久久久蜜桃| 一卡二卡三卡四卡| 国产一区视频在线看| 女人和拘做爰正片视频| 久久久久久久久久久久久久| 国产日韩欧美二区| 日韩黄色碟片| 51视频国产精品一区二区| 日本高清中文字幕在线| 亚洲国产天堂久久国产91| 五月天中文字幕| 亚洲福利一区二区| 日韩在线一卡二卡| 91蝌蚪国产九色| 久久aaaa片一区二区| 久久综合九色| 人妻互换免费中文字幕| av中字幕久久| 裸模一区二区三区免费| 日韩欧美激情电影| 国产精品久久久久久久久久ktv| 黄页网站在线观看免费| 日韩一区二区精品视频| 黄色国产在线| 亚洲国产成人精品电影| 国产黄色av片| 欧美日韩高清一区二区不卡| 台湾佬中文在线| 亚洲国产精品久久久男人的天堂| 日本伦理一区二区三区| 国产偷国产偷精品高清尤物| 污片免费在线观看| 懂色av一区二区夜夜嗨| 亚洲怡红院在线| 日韩 欧美一区二区三区| a级黄色一级片| 国内在线观看一区二区三区| 亚洲成年人专区| 成人黄色小视频| 日本一区精品| 免费av一区二区三区四区| 国产女人水真多18毛片18精品| 电影91久久久| 91精品久久久久| 国产精品久久久久久久久久齐齐| 欧美中文字幕精品| 乡村艳史在线观看| 97热精品视频官网| 超碰成人av| 91精品国产乱码久久久久久蜜臀 | 免费在线观看黄色网| 国产亚洲精品高潮| 精品久久久久一区二区三区| 亚洲精品日韩丝袜精品| 欧美18xxxxx| 亚洲欧美国产制服动漫| 麻豆av电影在线观看| 日韩精品在线影院| 免费国产在线视频| 亚洲女人被黑人巨大进入| 色视频免费在线观看| 日韩av中文在线| 欧美777四色影视在线| 国产亚洲欧洲高清| 婷婷激情在线| 操91在线视频| 97在线超碰| 国产91|九色| 成人日韩精品| 国产精品一区二区三区在线播放 | 在线观看亚洲欧美| 一本大道久久a久久综合婷婷 | 久草在线资源福利站| 91精品国产色综合久久不卡98| 国产伦久视频在线观看| 欧美影院久久久| 日本h片久久| 91影院在线免费观看视频| 亚洲国产视频二区| 国产亚洲情侣一区二区无| 亚洲精品国产setv| 亚洲午夜精品一区二区三区| 久久久久久久久久久妇女| 久久99久久久久久| 亚洲欧美大片| 粉色视频免费看| 成人综合在线观看| 成年人在线观看av| 专区另类欧美日韩| 久久精品人妻一区二区三区| 欧美日韩亚洲视频一区| 国产精品露脸视频| 精品裸体舞一区二区三区| 日本一级在线观看| 久久精品国产96久久久香蕉| 牛牛精品在线| 国产精品久久久久久av福利软件| 国产在线不卡一区二区三区| 黄色91av| 91欧美日韩| 男人和女人啪啪网站| 久久精品国产**网站演员| 在线播放av网址| 国产亚洲美州欧州综合国| 日本老熟俱乐部h0930| 日韩欧美亚洲成人| 999久久久久久| 亚洲人精选亚洲人成在线| 91福利国产在线观看菠萝蜜| 91av视频在线| 国产精品一区免费在线| 免费不卡亚洲欧美| 韩国精品一区二区三区| 别急慢慢来1978如如2| 成人性视频网站| 美女av免费看| 欧美午夜影院在线视频| 精品毛片一区二区三区| 中文字幕日本欧美| 国产伦理精品| 91在线网站视频| 日韩专区精品| 男人天堂网视频| 成人福利视频在线看| 麻豆精品国产免费| 在线精品视频免费播放| 四虎在线视频免费观看| 欧美裸体xxxx极品少妇| 成人免费黄色| 日韩欧美视频第二区| 久久精品二区三区| 日韩Av无码精品| 亚洲一区在线观看免费观看电影高清 | 97偷自拍亚洲综合二区| 日韩av在线综合| 国产凹凸在线观看一区二区| 日本免费网站视频| 日本道精品一区二区三区| 无码精品视频一区二区三区 | 色婷婷综合久久久中字幕精品久久| 国产成人av一区二区三区| 亚洲成人精品| 在线看免费毛片| 国产精品久久夜| 在线视频你懂得| 国产一区二区黑人欧美xxxx| 中文在线а√在线8| 国产日韩精品久久| 亚洲国产午夜| av在线播放网址| 婷婷久久综合九色综合绿巨人| www.天天干.com| 欧美日本啪啪无遮挡网站| 精品中文视频| 9191国产视频| 国产成人综合自拍| 免费在线观看黄视频| 日韩一区二区电影网| 影音先锋男人资源在线| 官网99热精品| 激情视频一区| 少妇一级淫片免费放播放| 五月激情丁香一区二区三区| 特黄视频在线观看| 51精品在线观看| 欧美激情在线精品一区二区三区| 日日碰狠狠躁久久躁婷婷| 久久久国产午夜精品| 欧美亚洲另类小说| 一区二区三区高清国产| 国产精品美女午夜爽爽| mm131午夜| 成人免费高清在线| 五月婷婷亚洲综合| 在线免费观看羞羞视频一区二区| 日韩av电影资源网| 成年人黄色在线观看| 国产成人啪午夜精品网站男同| 国产精品6666| 亚洲色图综合久久| 国外成人福利视频| 9191国产视频| 久久综合久久综合亚洲| 中文字幕人妻一区二区三区视频 | 免费h视频在线观看| 欧洲久久久久久| 韩国女主播成人在线观看| 欧美精品一区二区成人| 日韩激情在线视频| 日韩精品一区二区三区av| 国产精品12p| bt欧美亚洲午夜电影天堂| 成人一级免费视频| 九九精品在线播放| 亚洲丝袜美腿一区| 三级黄色片播放| 福利一区视频在线观看| 在线视频自拍| 狠狠爱一区二区三区| 日本aⅴ免费视频一区二区三区| 天天天天天天天天操| 日韩精品视频在线免费观看| 日韩成人综合网站| 免费观看美女裸体网站| 国产精品美女久久久久久| 亚洲高清视频在线播放| 国产91在线播放精品91| 一本到12不卡视频在线dvd| 熟妇高潮精品一区二区三区| 欧美日韩一本到| 男人av在线播放| 黄色录像特级片| 亚洲国产精品国自产拍av| 肥臀熟女一区二区三区| 国产美女久久久| 亚洲制服少妇|