日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

特定SQL的查询优化

發布時間:2024/4/13 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 特定SQL的查询优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過前面介紹的方法,我們可以清晰的知道,如何獲取一個存在性能問題的SQL了,以及如何度量一個SQL在執行的各個階段所消耗的時間,我們就可以針對性的對于一個SQL進行優化了,下面我們舉幾個在特定場景下,SQL進行優化的例子,如果大家還記得,什么影響了MYSQL性能的時候呢,曾經說過,對于大表的數據修改呢,最好是需要分批處理的,比如我們要在一個1000萬行數據的表中,刪除或更新100萬行的記錄,下面我們就分多個批次來刪除,一次只更新或刪除很少的行,比如說5000行記錄,我們在每次修改數據后呢,可以暫停幾秒,以給主從復制集群呢同步數據的時間

要做大分區修改數據呢,有很多種方式,這里提供了一個MYSQL存儲過程

就是下面圖片中所顯示的實例,大家可以根據自己的實際情況來修改這個存儲過程,或者使用自己熟悉的開發語言呢,來實現這個處理過程就可以了,那么這個存儲過程十分簡單,大家使用的時候只要使用紅框中,所標識的部分,就可以了,這里就指定了我們要對哪一個表,進行刪除或者更新,那么除了對大表數據進行修改之外呢,還有一個更為嚴重的問題,就是如何對大表的結構來進行修改,那么對大表的數據進行修改呢,可以采用分批處理的方式,避免主從庫的延遲,和產生查詢量的阻塞,當對于表結構修改呢,就無法進行分批處理,雖然當前版本的MYSQL呢,對于Innodb存儲引擎來說,進行表結構修改時呢,可以在線的進行,但是這也是有條件限制的,如果我們對表中的字段類型進行修改了,或者是改變字段寬度的時候呢,還是會鎖表,就算是在線修改表結構呢,是無法解決主從數據庫延遲的問題的,所以我們要使用特別的方法來對大表結構進行修改

就是使用主從復制的一種架構,在從服務器上進行修改,然后再使用主從切換,最后再到老服務器上進行修改,使用這種方法呢,由于要進行主從服務器的切換,所以還是存在一定的風險的,而另一種方法呢,是在主服務器上建立一個新的表,這個新表的結構呢,就是修改后的一個結構,然后再把老表的數據導入到新表中,并且在老表中建立一系列的觸發器,老表的數據也同時同步到新表中,當老表和新表的數據同步后呢,對老表加入一個排它鎖,然后重新命名,新表和老表的名字,最后刪除重命名的老表,那么這樣就完成表結構修改的工作,這樣做的好處呢,是盡量減少主從延遲,以及是在重命名之前呢,不用加任何的鎖,以及重命名的時候呢,要一個短暫的鎖,這通常對應用不會有影響,而缺點就是操作起來比較復雜,不過好在現在有工具來實現這個過程,把子查詢優化為關聯查詢,但是對于存在not in或者不等于這樣的比較子查詢呢,就無法進行自動優化了,這個會造成循環多次,來查找子表,來尋找是否滿足過濾條件,如果子查詢恰好是一個很大的表的話,這樣做的效率是非常的低,所以我們在進行SQL開發時呢,最好可以把這類查詢呢,進行改寫成關聯的查詢,下面就是進行SQL改寫的例子,這個SQL要查詢出,所有沒有產生繳費的信息

如果使用not in呢,就需要對customer表中的每一個customer_id呢,到payment表中去查詢,是否有繳費記錄,所以會多次對payment表進行查詢,這個時候我們就可以采用,left join方式呢,對查詢進行一些優化,下面就是改寫后的SQL,這里使用了left join關聯,來取代了not in的過濾

可以避免對payment表進行多次的查詢,一種非常常見的對not in過濾的一種方式,在我們的網站上呢,經常會顯示一些統計數據,比如最常見的就是一個商品的評論數,如果我們在用戶商品訪問頁面時呢,不時的去統計商品的評論數,通常來說呢,子查詢會類似于下面這個樣子,那么這個SQL的作用就是統計出,商品id為99的商品的評論

如果我們這個評論表中呢,上億條記錄,那么這個SQL執行起來顯然是非常慢的,特別是如果有大量的并發訪問,則會對數據庫帶來很大的壓力,由于這種情況下呢,我們通常使用匯總表的方法呢,來進行優化,所謂的匯總表呢,提前把要統計的數據呢,匯總并記錄到表中,以備后續的查詢來使用,那么針對這個查詢呢,我們可以使用下面的匯總表來進行優化,首先我們建立了這樣的一張匯總表

這個表其實只有兩列數據,我們還可以擴展一些其他的列,最重要的兩列,一個是product_id,一個就是統計的數量,對于這個表呢,我們可以每天凌晨呢,進行一次維護,統計截止前一天,每個商品評論數據的一個匯總,當然了,我們的評論如果是沒有刪除的情況下,也可以進行每天累計的一個更新,否則就需要進行全量更新了,接下來呢,如果我們在頁面中顯示每個商品的評論數,就會使用下面的方式來進行查詢了,在這個SQL中,首先看子查詢中,我們現在評論匯總表中,查詢了每一個商品,前一天的累計評論數,然后再到這個評論表中呢,查詢出當天的評論數,由于進行了時間的過濾,我們可以使用覆蓋索引,來對這個查詢進行優化,所以也就保證了查詢的效率,最后我們再把這個數據進行匯總,這樣就顯示出了每一個商品,全部的評論數據了,所謂匯總表也是我們非常常用的一種優化方式,這里說了如何對一些SQL進行優化

以及如何度量每一個階段所消耗的時間,我們就非常方便的對SQL來進行優化了

?

總結

以上是生活随笔為你收集整理的特定SQL的查询优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www国产 | 国产毛片91 | 国产精品成人网站 | 天天天色综合 | 波多野结衣电影在线播放 | 国产欧美精品一区二区 | 欧美日韩在线播放三区四区 | 国内偷拍一区 | 亚洲AV无码国产精品 | 国精品人妻无码一区二区三区喝尿 | 午夜剧场免费看 | 啪啪网免费 | 一级爱爱片 | 色香蕉在线 | 青青草视频在线看 | 中文字幕亚洲高清 | 97久久综合| 美女屁股眼视频免费 | 一级片视频网站 | 欧美自拍视频 | 韩产日产国产欧产 | 欧美精品久久久久久久久老牛影院 | 国产精品久久婷婷 | 午夜看片在线 | 婷婷在线观看视频 | 日本xxxx人| 国产91在线精品 | 偷拍亚洲精品 | 久久性生活 | 日韩免费网| 人妻少妇一区二区三区 | 在线播放a| 综合久久久久久久久久久 | 国内成人精品视频 | 亚洲自拍网站 | www.综合色| 91嫩草视频在线观看 | 99久久久国产 | www.国产视频.com | 亚洲一区二区三区成人 | 六月丁香久久 | 国产美女精品视频国产 | 亚洲成人av中文字幕 | 爱爱视频在线看 | 亚洲欧洲日本精品 | 天堂a视频 | 久久亚洲AV成人无码国产野外 | 带aaa级的网名 | 伊人久久大香线蕉av色婷婷色 | 波多野在线观看 | 亚洲第一页在线观看 | 被各种性器调教到哭vk | 自拍偷拍欧美激情 | 在线看黄色av | 精品一区在线看 | www.色呦呦| 在线视频 一区二区 | 国产精品久久久久久久久久妞妞 | 亚洲国产视频一区 | 久操视频免费在线观看 | av网页在线观看 | 久久久久久久久久久久久久久久久 | 国产图片区 | 久久激情影院 | 成人免费直播 | 刘亦菲一区二区三区免费看 | 99视频在线看 | 欧美午夜精品理论片 | 亚洲在线免费观看视频 | 男人疯狂高潮呻吟视频 | 久色视频在线观看 | 黄色免费毛片 | 麻豆影视在线播放 | 伊人狠狠操 | 激情av中文字幕 | 国产美女性生活 | aaaaav| 久久综合久色欧美综合狠狠 | 猛男大粗猛爽h男人味 | 91亚洲一线产区二线产区 | 七仙女欲春2一级裸体片 | 调教小屁屁白丝丨vk | 欧美老女人性生活视频 | 污网在线观看 | 久久久一级片 | 91新视频 | 懂色av成人一区二区三区 | 少妇人妻邻居 | 国产人免费人成免费视频 | 亚洲视频在线一区二区 | 日韩不卡视频在线观看 | 黄色录像片子 | 精品少妇人妻av一区二区 | 欧美日韩免费观看一区=区三区 | 国产美女又黄又爽又色视频免费 | 精品日韩一区二区三区 | 亚洲系列第一页 | 国产视频精品久久 | 国产一级自拍视频 |