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

MySQL優(yōu)化中B樹索引知識點(diǎn)總結(jié)

 更新時間:2019年02月21日 16:24:30   投稿:laozhang  
在本文里我們給大家整理了關(guān)于MySQL優(yōu)化中B樹索引的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。

為什么要進(jìn)行SQL優(yōu)化呢?很顯然,當(dāng)我們?nèi)憇ql語句時:

  • 1會發(fā)現(xiàn)性能低
  • 2.執(zhí)行時間太長,
  • 3.或等待時間太長
  • 4.sql語句欠佳,以及我們索引失效
  • 5.服務(wù)器參數(shù)設(shè)置不合理

SQL語句執(zhí)行過程分析

1.編寫過程:

編寫過程就是我們平常寫sql語句的過程,也可以理解為編寫順序,以下就是我們編寫順序:

select from join on where 條件 group by 分組 having過濾組 order by排序 limit限制查詢個數(shù)

我們雖然是這樣去寫的,但是它mysql的引擎去解析時,并不是依照我們以上編寫的這樣的順序;

它并不是先解析select 而是先解析from,也就說,我們的解析過程跟編寫過程是不一致的,所以我們看下發(fā)的解析順序

2.解析過程:

from on join where group by having select order by limit 

以上就是mysql的解析過程,我們發(fā)現(xiàn),跟我們編寫的過程完全不一致!

索引

什么是索引(index)?簡單的來講就是書的目錄;

比如說我現(xiàn)在要通過字典來查“王”這個字,如果你在沒有目錄的情況下去找“王”這個字,你就需要把這個字典從頭到尾的翻一遍,如果有一千頁,你就必須一頁一頁的去翻,直到找到為止;

索引就相當(dāng)于目錄,查這個“王”之前先去翻看目錄,發(fā)現(xiàn)“W”在300頁,因為王首字母是“W”,我們直接去在300頁中找,這樣找起來就非常快;

索引在數(shù)據(jù)庫中是關(guān)鍵字insex,用官方的定義的意思來說,索引就是幫助MySQL快速高效的獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu);

索引是一個數(shù)據(jù)結(jié)構(gòu),它是一個為了高效查詢數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu);

那它到底是什么數(shù)據(jù)結(jié)構(gòu)呢?

其實它就是一個樹,我們用的比較多的就是B樹、Hash樹,在MySQL里面,用的就是B樹索引;

B樹索引

首先我畫一個圖,假裝這個是數(shù)據(jù)表,并且給age列加一個索引:

就把這個索引當(dāng)成一個目錄,也就是age為50的,就指向第一行,age為33的,指向第五行;

下面我會將B樹索引畫出來,看看到底是怎么索引了:

我們給age加了索引列后,它就會像樹一樣,把小的放到左邊,把大的放到右邊,第一列為50,比50小的在左邊,23,比23小的繼續(xù)向左排列,

33比23大,就向左排列20比22小就在22后面繼續(xù)向左排列,以此類推!

比如我們現(xiàn)在需要查33:

select * From 表名 where age = 33;

不加索引的話,就會從50開始查,50不是 23,不是22不是....,不加索引就一個個去找;

如果加索引的話,找33,發(fā)現(xiàn)33比50小,第一次,再去找23,第二次,33比23大,第三次,僅需三次就查到了:

索引的弊端

1.索引本身很占空間,可以存放在內(nèi)存/硬盤(通常)

2.索引不是所有情況均可適用比如:少量數(shù)據(jù)、頻繁更新的字段(如果數(shù)據(jù)表中的某一列經(jīng)常會發(fā)生改變,那么這一列就不適合做索引)

3.索引確實可以提高查詢效率,但是同時會降低增刪改的效率,比如:

我們沒有索引,你改44,改成45,很好改,直接改就行了,如果你有索引,我不光要改表里面的44,我需要把B樹里面的44也要改:

有些人就覺得不劃算了,提升一個降低三個,這樣就很不劃算了,其實很劃算的!

因為我們大部分情況下都是在查詢,增刪改很少,因為查詢影響性能很大的,所以非常有必要使用它

索引的優(yōu)勢

1.提高了查詢效率

客戶端到服務(wù)端,鏈接服務(wù)端是通過IO,通過輸入輸出流,所以說,提高查詢效率就是降低了IO的使用率

2.降低CPU使用率

比如說我sql里面有一個order by desc 根據(jù)年齡降序或升序,如果沒有索引,你需要把a(bǔ)ge全部拿出來全部排個序,但是如果有了索引,你就不需要排序了,B樹本身就是一個排好序的結(jié)構(gòu),最左邊必然是最小的,最最右邊必然是最大的:

只需要根據(jù)一定的規(guī)則遍歷出來就行了。

以上就是相關(guān)的B數(shù)索引的相關(guān)知識點(diǎn),感謝大家的閱讀和對腳本之家的支持。

相關(guān)文章

  • MySQL基于java實現(xiàn)備份表操作

    MySQL基于java實現(xiàn)備份表操作

    這篇文章主要介紹了MySQL基于java實現(xiàn)備份表操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • MySQL中CONCAT()函數(shù)出現(xiàn)值為空的問題及解決辦法

    MySQL中CONCAT()函數(shù)出現(xiàn)值為空的問題及解決辦法

    項目中查詢用到了concat()拼接函數(shù),本文主要介紹了MySQL中CONCAT()函數(shù)出現(xiàn)值為空的問題及解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • MySQL數(shù)據(jù)庫基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解

    MySQL數(shù)據(jù)庫基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解

    很多日常業(yè)務(wù)場景都會用到j(luò)son文件作為數(shù)據(jù)存儲起來,而mysql5.7以上就提供了存儲json的支撐。這篇文章就為大家整理了MySQL中JSON函數(shù)的各類操作,感興趣的可以了解一下
    2023-02-02
  • mysql 字符串函數(shù)收集比較全

    mysql 字符串函數(shù)收集比較全

    mysql 字符串函數(shù)收集,需要的朋友可以參考下。
    2010-03-03
  • MySQL PXC構(gòu)建一個新節(jié)點(diǎn)只需IST傳輸?shù)姆椒?推薦)

    MySQL PXC構(gòu)建一個新節(jié)點(diǎn)只需IST傳輸?shù)姆椒?推薦)

    下面小編就為大家?guī)硪黄狹ySQL PXC構(gòu)建一個新節(jié)點(diǎn)只需IST傳輸?shù)姆椒?推薦)。小編覺的挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 淺談Mysql時間的存儲?datetime還是時間戳timestamp

    淺談Mysql時間的存儲?datetime還是時間戳timestamp

    本文主要介紹了淺談Mysql時間的存儲?datetime還是時間戳timestamp,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • mysql ERROR 1045 (28000)問題的解決方法

    mysql ERROR 1045 (28000)問題的解決方法

    這篇文章主要介紹了mysql ERROR 1045 (28000)問題的解決方法,文中步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • MySQL數(shù)據(jù)庫數(shù)據(jù)刪除操作詳解

    MySQL數(shù)據(jù)庫數(shù)據(jù)刪除操作詳解

    本文我們將要學(xué)習(xí)的是作為刪除數(shù)據(jù)使用的?“DELETE”?語句,“DELETE”?語句是用來刪除數(shù)據(jù)的,它不能用來刪除數(shù)據(jù)表本身。刪除數(shù)據(jù)表使用的是?“DROP”?語句,而?“DELETE”?的作用只是用來刪除記錄而已
    2022-08-08
  • mysql 讓一個存儲過程定時作業(yè)的代碼

    mysql 讓一個存儲過程定時作業(yè)的代碼

    以下例子主要是實現(xiàn)簡單的mysq 定時作業(yè),需要的朋友可以參考下。
    2011-05-05
  • MySQL?表查詢必備:基本操作詳解

    MySQL?表查詢必備:基本操作詳解

    MySQL表基本查詢指南,帶你輕松掌握SQL查詢技巧!無論你是初學(xué)者還是老手,都能在本文中找到適合自己的學(xué)習(xí)內(nèi)容,讓我們一起探索MySQL的世界吧!
    2024-01-01

最新評論