欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1、避免使用select *

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

2、用union all 代替union

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

3、小表驅(qū)動大表

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

4、批量插入

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

5、使用limit

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

6、in中值太多

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

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

7、增量查詢

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

查詢比上次id 大的100條

8、高效的分頁

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

mysql會查詢10020條,然后丟棄前面10000條,這個比較浪費資源

可以優(yōu)化:

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

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

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

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

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

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

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

10、join表不宜過多

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

11、join時需要注意

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

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

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

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

13、選擇合理的字段類型

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

14、提升group by效率

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

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

這種寫法就不好,建議以下寫法:

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

15、索引優(yōu)化

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

select * from user 
force index(索引)

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

相關(guān)文章

  • MySQL實現(xiàn)樂觀鎖的方式詳解

    MySQL實現(xiàn)樂觀鎖的方式詳解

    在 MySQL 中,可以通過使用樂觀鎖來實現(xiàn)并發(fā)控制,以避免數(shù)據(jù)沖突和并發(fā)更新問題,樂觀鎖是一種樂觀的思想,它假設(shè)并發(fā)操作不會導(dǎo)致沖突,只有在提交更新時才會檢查是否發(fā)生沖突,本文給大家介紹了Mysql如何實現(xiàn)樂觀鎖,需要的朋友可以參考下
    2023-09-09
  • 一臺linux主機(jī)啟動多個MySQL數(shù)據(jù)庫的方法

    一臺linux主機(jī)啟動多個MySQL數(shù)據(jù)庫的方法

    這篇文章主要介紹了一臺linux主機(jī)啟動多個MySQL數(shù)據(jù)庫的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL在哪些情況下不使用索引的示例

    MySQL在哪些情況下不使用索引的示例

    盡管索引可以顯著提高數(shù)據(jù)庫的查詢性能,但在某些情況下,MySQL可能不會使用索引,本文就來介紹一下MySQL在哪些情況下不使用索引,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • MySQL之select in 子查詢優(yōu)化的實現(xiàn)

    MySQL之select in 子查詢優(yōu)化的實現(xiàn)

    這篇文章主要介紹了MySQL之select in 子查詢優(yōu)化的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 關(guān)于避免MySQL替換邏輯SQL的坑爹操作詳解

    關(guān)于避免MySQL替換邏輯SQL的坑爹操作詳解

    這篇文章主要給大家介紹了關(guān)于避免MySQL替換邏輯SQL的坑爹操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • mysql自增navicat_navicat如何設(shè)置主鍵自增

    mysql自增navicat_navicat如何設(shè)置主鍵自增

    通過Navicat設(shè)置MySQL表的主鍵自增,步驟包括:打開Navicat連接數(shù)據(jù)庫,選擇表并設(shè)計,右擊id字段設(shè)置為主鍵,然后勾選自動遞增功能,這樣每次插入新記錄時,id字段都會自動遞增
    2025-01-01
  • MySQL的mysqldump工具用法詳解

    MySQL的mysqldump工具用法詳解

    這篇文章主要介紹了MySQL的mysqldump工具用法詳解,同時附帶了相關(guān)Source命令的用法,詳解需要的朋友可以參考下
    2015-07-07
  • 一文帶你了解MySQL中的鎖機(jī)制

    一文帶你了解MySQL中的鎖機(jī)制

    鎖是計算機(jī)協(xié)調(diào)多個進(jìn)程或線程并發(fā)訪問某一資源的機(jī)制(避免爭搶)。本文就來通過幾個簡單的實力為大家詳細(xì)講講MySQL中的鎖機(jī)制吧
    2023-02-02
  • MySQL如何使用授權(quán)命令grant

    MySQL如何使用授權(quán)命令grant

    這篇文章主要介紹了MySQL如何使用授權(quán)命令grant,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié)

    MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié)

    這篇文章主要給大家介紹了MySQL內(nèi)存使用率高且不釋放問題排查與總結(jié),文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-09-09

最新評論