日韩性视频-久久久蜜桃-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的查询优化的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本久久精品视频 | av免播放器| 天天操狠狠操夜夜操 | 一级特黄aa大片欧美 | 日韩中文字幕二区 | 伊人久久大香网 | 日韩欧美视频在线免费观看 | 日韩小视频网站 | 成人一二三区 | 久久久久亚洲av片无码下载蜜桃 | 无码av免费精品一区二区三区 | 视频久久 | 黄色一级生活片 | 第一福利丝瓜av导航 | 亚洲综合射| 91视频影院| 色xxxxxx| 黄色香港三级三级三级 | 久久在线看 | 伊人色婷婷 | 日本人妻一区 | 美女扒开腿让人桶爽原神 | 欧美经典一区二区 | 国产精品啪啪啪视频 | 色哟哟无码精品一区二区三区 | 成人综合婷婷国产精品久久 | 田中瞳av | 男女插孔视频 | 成人高清免费观看 | 国产二级视频 | 亚洲天堂男人天堂 | 亚洲美女黄色片 | 欧美色综合色 | 欧美v视频| 成人一区二区三区在线 | 男女av| 亚洲国产精品网站 | 国产精品无码久久久久久电影 | 天堂中文av| 免费成年人视频在线观看 | 国产在线播放一区二区三区 | 亚洲综合久久网 | 欧美精品久久久久久久自慰 | 114国产精品久久免费观看 | 成人夜色视频 | 久久婷五月天 | 久久国产精品一区二区 | 亚洲暴爽| 亚洲高清二区 | 成人自拍在线 | 午夜久久久久久久久久久 | 久久午夜激情 | 日韩成人av在线 | 中文字幕免费中文 | 香蕉视频成人在线 | 亚洲av中文无码乱人伦在线观看 | 欧洲三级在线 | 天天天天天天干 | 日本人妻不卡一区二区三区中文字幕 | 国产在线最新 | 黄色网页免费 | 成人性生交大片免费卡看 | 香蕉视频911| 天堂中文在线网 | 久久久天天 | 国产一级片中文字幕 | 天天插插| 欧美日本成人 | 福利视频在线看 | 欧美精品色图 | 免费人成在线观看 | 欧美性教育视频 | 人妻无码久久精品人妻 | 国产真实自拍 | 玖玖爱在线观看 | 国产又黄又粗又猛又爽 | 国产精品久久久久久久久久久久久久久久久 | 秋霞一级全黄大片 | 天堂影视在线观看 | 日韩大片一区二区 | 六月色婷婷 | 北条麻妃久久 | 色婷婷狠狠爱 | 香港三级日本三级三69 | 丰满少妇久久久久久久 | 国产三级一区二区三区 | 中文在线www | 99黄色 | 国产乱国产乱老熟 | 视频精品一区二区 | 国产小视频你懂的 | 在线免费观看av网址 | 久久综合日本 | 精品国产18久久久久久二百 | 国产亚洲午夜 | 在线观看视频中文字幕 | 四虎永久在线 | 日日狠狠久久 | 午夜影视免费 |