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

歡迎訪問 生活随笔!

生活随笔

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

windows

Mysql性能优化这5点你知道吗?简单却容易被初学者忽略!

發(fā)布時間:2024/1/11 windows 32 coder
生活随笔 收集整理的這篇文章主要介紹了 Mysql性能优化这5点你知道吗?简单却容易被初学者忽略! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Mysql性能優(yōu)化這5點你知道嗎?簡單卻容易被初學者忽略!

文編|JavaBuild

哈嘍,大家好呀!我是JavaBuild,以后可以喊我鳥哥,嘿嘿!俺滴座右銘是不在沉默中爆發(fā),就在沉默中滅亡,一起加油學習,珍惜現(xiàn)在來之不易的學習時光,等工作之后,你就會發(fā)現(xiàn),想學習真的需要擠時間,厚積薄發(fā)啦!

在日常工作中,我們常用的數(shù)據庫無非是Mysql、Oracle、SqlServer、DB2這幾種(僅針對關系型數(shù)據庫中),對于我們來說,數(shù)據庫的性能優(yōu)化是一個重點問題,也是很多公司面試時喜歡提及的,這里總結了一些比較常見,但又相對容易忽略的部分,供大家批判學習。

1、切勿使用select * 進行全表查詢

select * 會直接查詢出數(shù)據表中的全量字段數(shù)據,可能很多數(shù)據并不需要,白白浪費了數(shù)據庫資源,并且select * 不會走覆蓋索引,可能會出現(xiàn)回表操作,在單表數(shù)據量較大情況下,導致sql查詢的效率低下。

2、盡量用union all 替代union

union組合查詢,可以不獲取幾張表排重后的數(shù)據結果。
union all 是用來獲取幾張表的全量數(shù)據,不會排重,包含重復數(shù)據。
在union排重的過程中,需要遍歷、排序和比較,耗時耗資源。所以,若非一些不可有重復數(shù)據的業(yè)務場景外,盡量選擇union all。

3、小表驅動大表

何為小表驅動大表?顧名思義,兩多表聯(lián)合查詢時,用數(shù)據量小的表去驅動數(shù)據量大的數(shù)據表,譬如:有user和order兩張表,order表為100萬數(shù)據量,user表有100條數(shù)據,此時想查一下有效用戶下過的訂單情況。
有如下兩種實現(xiàn)方式:

這兩種方式,其實使用in查詢的效果更好,因為,執(zhí)行順序是先執(zhí)行in中子查詢,然后再執(zhí)行外面的雨具,此時in中數(shù)據量少,查詢速度快。
當使用exists時,會優(yōu)先查詢左側的主查詢,然后將查詢出的結果和右邊的語句進行匹配,用100萬條數(shù)據與100條數(shù)據匹配結果,顯然效率會查很多。
這種做一個小總結:
1:in關鍵字適應于左邊大表,右邊小表;
2:exists關鍵字適應于左側小表,右邊大表;

后面我們還會提及的join連接查詢,也同樣是遵循小表驅動大表規(guī)則。

4、用連接查詢代替子查詢

在Mysql中,如果想通過多張表查詢數(shù)據,一般會使用子查詢或者連接查詢的方式進行處理(在Mysql8.0之后支持與Oracle相同的WITH AS語法進行數(shù)據分塊處理 )

通過in關鍵字實現(xiàn)的子查詢方式,需要先查詢出內層語句的結果,作為外層語句的過濾條件使用,在這個過程中子查詢會被創(chuàng)建為臨時表,查詢結束后,刪除這些臨時表,如果幾百上千行的sql中頻繁使用的話,會多一些性能損耗。
這時候可以考慮通過連接查詢,但是!在《阿里巴巴開發(fā)者手冊》中對于join的使用數(shù)量限制在了3個,當一段sql中頻繁使用join的話,會帶來索引選擇的困難,曾經在工作中,使用一個數(shù)據量較大的表進行了6次的left join 最終查詢耗時很久。
這里建議大家可以采用多種方式混合使用的方式,先用with as 將核心數(shù)據進行一次處理,隨后在通過 join進行聯(lián)接查詢,匯總結果。

5、建表時選擇合適字段

  1. 能用數(shù)字類型,就不用字符串,字符的處理要比數(shù)字慢
  2. 滿足使用情況下,用小類型,比如bit用來存布爾值,tinyint存枚舉值
  3. 長度固定的字符串字段,用char類型
  4. 長度可變字符串用varchar類型
  5. 金額字段用decimal,避免精度丟失

總結

以上是生活随笔為你收集整理的Mysql性能优化这5点你知道吗?简单却容易被初学者忽略!的全部內容,希望文章能夠幫你解決所遇到的問題。

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