濮阳杆衣贸易有限公司

主頁 > 知識庫 > MySQL優(yōu)化中B樹索引知識點總結

MySQL優(yōu)化中B樹索引知識點總結

熱門標簽:南昌高頻外呼系統(tǒng)哪家公司做的好 淄博400電話申請 溫州瑞安400電話怎么申請 電銷機器人 行業(yè) 百度地圖標注后不顯示 電話機器人市場趨勢 俄國地圖標注app 昆明電信400電話辦理 電銷機器人各個細節(jié)介紹

為什么要進行SQL優(yōu)化呢?很顯然,當我們去寫sql語句時:

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

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

1.編寫過程:

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

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

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

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

2.解析過程:

from on join where group by having select order by limit 

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

索引

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

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

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

索引在數據庫中是關鍵字insex,用官方的定義的意思來說,索引就是幫助MySQL快速高效的獲取數據的數據結構;

索引是一個數據結構,它是一個為了高效查詢數據的數據結構;

那它到底是什么數據結構呢?

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

B樹索引

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

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

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

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

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

比如我們現在需要查33:

select * From 表名 where age = 33;

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

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

索引的弊端

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

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

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

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

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

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

索引的優(yōu)勢

1.提高了查詢效率

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

2.降低CPU使用率

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

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

以上就是相關的B數索引的相關知識點,感謝大家的閱讀和對腳本之家的支持。

您可能感興趣的文章:
  • MySql如何查看索引并實現優(yōu)化
  • MySQL如何基于Explain關鍵字優(yōu)化索引功能
  • MySQL利用索引優(yōu)化ORDER BY排序語句的方法
  • MySQL 函數索引的優(yōu)化方案
  • Mysql索引性能優(yōu)化問題解決方案
  • MySQL性能優(yōu)化之如何高效正確的使用索引
  • 一篇文章掌握MySQL的索引查詢優(yōu)化技巧
  • MySQL數據庫優(yōu)化之索引實現原理與用法分析
  • MySQL中or、in、union與索引優(yōu)化詳析
  • 分析Mysql表讀寫、索引等操作的sql語句效率優(yōu)化問題
  • 淺談MySQL的B樹索引與索引優(yōu)化小結
  • 淺談MySQL索引優(yōu)化分析
  • MySQL如何優(yōu)化索引

標簽:甘南 拉薩 葫蘆島 洛陽 安徽 吐魯番 嘉峪關

巨人網絡通訊聲明:本文標題《MySQL優(yōu)化中B樹索引知識點總結》,本文關鍵詞  MySQL,優(yōu)化,中,樹,索引,知識點,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL優(yōu)化中B樹索引知識點總結》相關的同類信息!
  • 本頁收集關于MySQL優(yōu)化中B樹索引知識點總結的相關信息資訊供網民參考!
  • 推薦文章
    贞丰县| 元谋县| 饶平县| 石河子市| 融水| 贺兰县| 洱源县| 永川市| 新乡市| 台中县| 高唐县| 新沂市| 西宁市| 常宁市| 石家庄市| 古浪县| 神池县| 桑日县| 青浦区| 惠东县| 大荔县| 栖霞市| 新昌县| 信阳市| 邵武市| 博爱县| 环江| 宽甸| 龙陵县| 高要市| 龙口市| 屏东市| 衡阳市| 本溪市| 综艺| 济南市| 龙海市| 武隆县| 喜德县| 龙江县| 临朐县|