最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql調(diào)優(yōu)的幾種方式小結(jié)

 更新時(shí)間:2023年05月25日 10:59:47   作者:_不吃貓的魚(yú)_  
本文主要介紹了mysql調(diào)優(yōu)的幾種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

sql調(diào)優(yōu)的幾種方式:避免使用select *、用union all 代替union、小表驅(qū)動(dòng)大表、批量操作、多用limit、in中值太多、增量查詢、高效的分頁(yè)、用鏈接查詢代替子查詢、join數(shù)量不宜過(guò)多、join時(shí)需要注意、控制索引的數(shù)量、選擇合理的字段類(lèi)型、提升group by的效率、索引優(yōu)化。

1、避免使用select *

select *會(huì)查詢所以字段,實(shí)際業(yè)務(wù)場(chǎng)景中不需要所有的字段,可以不進(jìn)行查詢。

2、用union all 代替union

union會(huì)排重,排重過(guò)程需要遍歷,排序,比較,更消耗cpu資源。在確定唯一,沒(méi)有重復(fù)數(shù)據(jù)的情況下,盡量用用union all。

3、小表驅(qū)動(dòng)大表

in 的話里面驅(qū)動(dòng)外面,in適合里子查詢是小表
exist 的話外面驅(qū)動(dòng)里面,適合外面是小表

4、批量插入

當(dāng)然一次插入量也不能太大,可以分批插入。

5、使用limit

在不需要獲取全部記錄的情況下,使用limit獲取指定數(shù)量。

6、in中值太多

查詢出來(lái)數(shù)量太大,限制一次最大查詢條數(shù)

還可以,多線程查詢,最后把查詢出來(lái)的數(shù)據(jù)匯總。

7、增量查詢

select name,age from user where id>#{lastId} limit 100;

查詢比上次id 大的100條

8、高效的分頁(yè)

select id,name,age from user limit 10000, 20;

mysql會(huì)查詢10020條,然后丟棄前面10000條,這個(gè)比較浪費(fèi)資源

可以優(yōu)化:

select id,name,age from user id>10000 limit 20;

找到上次分頁(yè)最大id
假如id是連續(xù)的,并且有序,可以用between
注意: between要在唯一索引上分頁(yè),不然會(huì)出現(xiàn)每頁(yè)大小不一致問(wèn)題。

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

MySQL如果需要在兩張以上表中查詢數(shù)據(jù)的話,一般有兩種實(shí)現(xiàn)方式
子查詢
連接查詢

select * from order where user_id in (select id from user where name='vie');?

子查詢可以通過(guò)in實(shí)現(xiàn),優(yōu)點(diǎn):這樣簡(jiǎn)單,
但缺點(diǎn)是,MySQL執(zhí)行子查詢時(shí),需要?jiǎng)?chuàng)建臨時(shí)表,查詢完成后再刪除臨時(shí)表,有一些額外開(kāi)銷(xiāo)。
可以改成連接查詢:

select o.* from order o inner join user u on o.user_id = u.id where u.name='vie'; 

10、join表不宜過(guò)多

join表不宜超過(guò)3個(gè),如果join太多,MySQL在選擇索引時(shí)會(huì)非常復(fù)雜,很容易選錯(cuò)索引。
并且沒(méi)有命中,nested loop join 就會(huì)分別從兩個(gè)表讀一行數(shù)據(jù)進(jìn)行對(duì)比,時(shí)間復(fù)雜度n^2。

11、join時(shí)需要注意

join用的最多的時(shí)left join 和 inner join
left join:兩個(gè)表的交集和左表的剩余數(shù)據(jù)
inner join:兩個(gè)表的交集

inner join mysql會(huì)自動(dòng)選擇小表驅(qū)動(dòng),
left join 左邊的表驅(qū)動(dòng)右邊的表

12、控制索引數(shù)量

索引不是越多越好,索引需要額外的存儲(chǔ)空間,B+樹(shù)保存索引,額外的性能消耗。
單表索引數(shù)量盡量控制在5個(gè)以內(nèi),且單個(gè)索引字段數(shù)量控制在5個(gè)以內(nèi)。

13、選擇合理的字段類(lèi)型

能用數(shù)字類(lèi)型就不用字符串,字符串處理速度比數(shù)字類(lèi)型慢

14、提升group by效率

主要功能去重,分組
先過(guò)濾數(shù)據(jù),減少數(shù)據(jù),再分組

select id, name ,age from user
group by id
having id <50; 

這種寫(xiě)法就不好,建議以下寫(xiě)法:

select id, name ,age from user
where id <50
group by id; 

15、索引優(yōu)化

強(qiáng)制走哪個(gè)索引

select * from user 
force index(索引)

到此這篇關(guān)于mysql調(diào)優(yōu)的幾種方式小結(jié)的文章就介紹到這了,更多相關(guān)mysql調(diào)優(yōu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談mysql的子查詢聯(lián)合與in的效率

    淺談mysql的子查詢聯(lián)合與in的效率

    本文是作者在實(shí)際產(chǎn)品測(cè)試中遇到的問(wèn)題,繼而作了相關(guān)總結(jié),具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • CentOs7安裝部署Sonar環(huán)境的詳細(xì)過(guò)程(JDK1.8+MySql5.7+sonarqube7.8)

    CentOs7安裝部署Sonar環(huán)境的詳細(xì)過(guò)程(JDK1.8+MySql5.7+sonarqube7.8)

    這篇文章主要介紹了CentOs7安裝部署Sonar環(huán)境(JDK1.8+MySql5.7+sonarqube7.8),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • MySQL 主從復(fù)制部署及驗(yàn)證(示例詳解)

    MySQL 主從復(fù)制部署及驗(yàn)證(示例詳解)

    本文介紹MySQL主從復(fù)制部署步驟及學(xué)校管理數(shù)據(jù)庫(kù)創(chuàng)建腳本,包含表結(jié)構(gòu)設(shè)計(jì)、示例數(shù)據(jù)插入和查詢語(yǔ)句,用于驗(yàn)證主從同步功能,感興趣的朋友一起看看吧
    2025-07-07
  • win10下mysql 8.0.13 安裝配置方法圖文教程

    win10下mysql 8.0.13 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了win10下mysql 8.0.13安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • mac系統(tǒng)下mysql 8.0.11 安裝指南

    mac系統(tǒng)下mysql 8.0.11 安裝指南

    這篇文章主要為大家詳細(xì)介紹了mac系統(tǒng)下mysql 8.0.11 安裝指南,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • MYSQL日志的正確刪除方法詳解

    MYSQL日志的正確刪除方法詳解

    這篇文章主要介紹了MYSQL日志的正確刪除方法,詳細(xì)分析了MySQL日志刪除的步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-04-04
  • MySQL query_cache_type 參數(shù)與使用詳解

    MySQL query_cache_type 參數(shù)與使用詳解

    這篇文章主要介紹了MySQL query_cache_type參數(shù)介紹,需要的朋友可以參考下
    2021-07-07
  • 如何利用MySQL查詢varbinary中存儲(chǔ)的數(shù)據(jù)

    如何利用MySQL查詢varbinary中存儲(chǔ)的數(shù)據(jù)

    varbinary 類(lèi)型和char與varchar類(lèi)型是相似的,他們是包含字節(jié)流而不是字符流,他們有二進(jìn)制字符的集合和順序,他們的對(duì)比,排序是基于字節(jié)的數(shù)值進(jìn)行的,本文給大家介紹如何利用MySQL查詢varbinary中存儲(chǔ)的數(shù)據(jù),感興趣的朋友一起看看吧
    2023-07-07
  • MYSQL初學(xué)者命令行使用指南

    MYSQL初學(xué)者命令行使用指南

    其實(shí)MYSQL的對(duì)數(shù)據(jù)庫(kù)的操作與其它的SQL類(lèi)數(shù)據(jù)庫(kù)大同小異,您最好找本將SQL的書(shū)看看。我在這里只介紹一些基本的,其實(shí)我也就只懂這些了,呵呵。最好的MYSQL教程還是“晏子“譯的“MYSQL中文參考手冊(cè)“不僅免費(fèi)每個(gè)相關(guān)網(wǎng)站都有下載,而且它是最權(quán)威的。
    2008-06-06
  • Mysql中高效JOIN操作之多表關(guān)聯(lián)查詢實(shí)戰(zhàn)指南

    Mysql中高效JOIN操作之多表關(guān)聯(lián)查詢實(shí)戰(zhàn)指南

    在現(xiàn)代軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)幾乎無(wú)處不在,而多表關(guān)聯(lián)查詢(JOIN)則是我們與數(shù)據(jù)庫(kù)交互的核心操作之一,本文將從JOIN的基礎(chǔ)知識(shí)講起,逐步深入到優(yōu)化技巧和實(shí)戰(zhàn)案例,希望對(duì)大家有所幫助
    2025-08-08

最新評(píng)論

怀远县| 宽甸| 德格县| 理塘县| 临洮县| 德化县| 安溪县| 陈巴尔虎旗| 镇安县| 什邡市| 伊春市| 北京市| 太和县| 大同市| 抚宁县| 庐江县| 奉贤区| 河北区| 台东县| 镇雄县| 大渡口区| 四川省| 高青县| 泰兴市| 吉隆县| 南澳县| 宿州市| 普定县| 枣庄市| 三穗县| 石狮市| 忻州市| 兴文县| 冀州市| 延安市| 龙南县| 潞西市| 泗水县| 龙川县| 额济纳旗| 阿坝县|