内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

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

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

恩平網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,恩平網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為恩平1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個(gè)售后服務(wù)好的恩平做網(wǎng)站的公司定做!

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

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

1.編寫過程:

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

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

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

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

2.解析過程:

from on join where group by having select order by limit 

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

索引

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

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

索引就相當(dāng)于目錄,查這個(gè)“王”之前先去翻看目錄,發(fā)現(xiàn)“W”在300頁,因?yàn)橥跏鬃帜甘恰癢”,我們直接去在300頁中找,這樣找起來就非常快;

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

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

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

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

B樹索引

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

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

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

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

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

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

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

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

select * From 表名 where age = 33;

不加索引的話,就會(huì)從50開始查,50不是 23,不是22不是....,不加索引就一個(gè)個(gè)去找;

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

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

索引的弊端

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

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

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

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

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

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

因?yàn)槲覀兇蟛糠智闆r下都是在查詢,增刪改很少,因?yàn)椴樵冇绊懶阅芎艽蟮模苑浅S斜匾褂盟?/p>

索引的優(yōu)勢

1.提高了查詢效率

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

2.降低CPU使用率

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

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

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

以上就是相關(guān)的B數(shù)索引的相關(guān)知識點(diǎn),感謝大家的閱讀和對創(chuàng)新互聯(lián)的支持。

網(wǎng)站名稱:MySQL優(yōu)化中B樹索引知識點(diǎn)總結(jié)
網(wǎng)站地址:http://www.rwnh.cn/article38/psgspp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、搜索引擎優(yōu)化、軟件開發(fā)、網(wǎng)站收錄、電子商務(wù)小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
鄂尔多斯市| 乌兰浩特市| 平舆县| 上思县| 静乐县| 衡东县| 清镇市| 罗田县| 台南市| 汽车| 光泽县| 荣昌县| 平山县| 黄平县| 灌南县| 丹东市| 砚山县| 乐平市| 凉山| 麟游县| 和平区| 阜新| 土默特左旗| 富顺县| 丹巴县| 宁河县| 建水县| 泰州市| 吉木萨尔县| 奉贤区| 枞阳县| 九龙坡区| 黄陵县| 长兴县| 剑河县| 遂昌县| 开鲁县| 大宁县| 金昌市| 卢龙县| 洛浦县|