成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

mysql索引命中規(guī)則的說明-創(chuàng)新互聯(lián)

這篇文章主要講解了“mysql索引命中規(guī)則的說明”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“mysql索引命中規(guī)則的說明”吧!

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

首先我們來了解一下最左匹配原則,如下:

1、先定位該sql的查詢條件,有哪些,那些是等值的,那些是范圍的條件。

2、等值的條件去命中索引最左邊的一個字段,然后依次從左往右命中,范圍的放在最后。

分析講解

1、mysql的索引分為聚簇索引和非聚簇索引,mysql的表是聚集索引組織表。

聚集規(guī)則是:有主鍵則定義主鍵索引為聚集索引;沒有主鍵則選第一個不允許為NULL的索引;還沒有就使用innodb的內(nèi)置rowid為聚集索引。

(免費學(xué)習(xí)視頻教程推薦:mysql視頻教程)

非聚集索引也稱為二級索引,或者輔助索引。

2、mysql的索引無論是聚集索引還是非聚集索引,都是B+樹結(jié)構(gòu)。聚集索引的葉子節(jié)點存放的是數(shù)據(jù),非聚集索引的葉子節(jié)點存放的是非聚集索引的key和主鍵值。B+樹的高度為索引的高度。

3、索引的高度

聚集索引的高度決定了根據(jù)主鍵取數(shù)據(jù)的理論IO次數(shù)。根據(jù)非聚集索引讀取數(shù)據(jù)的理論IO次數(shù)還要加上訪問聚集索引的IO次數(shù)總和。實際上可能要不了這么多IO。因為索引的分支節(jié)點所在的Page因為多次讀取會在mysql內(nèi)存里cache住。

mysql的一個block大小默認(rèn)是16K,可以根據(jù)索引列的長度粗略估算索引的高度。

sql優(yōu)化依據(jù)

SQL語句中的where條件,使用以上的提取規(guī)則,最終都會被提取到Index Key (First Key & Last Key),Index Filter與Table Filter之中。

Index First Key,只是用來定位索引的起始范圍,因此只在索引第一次Search Path(沿著索引B+樹的根節(jié)點一直遍歷,到索引正確的葉節(jié)點位置)時使用,一次判斷即可;

Index Last Key,用來定位索引的終止范圍,因此對于起始范圍之后讀到的每一條索引記錄,均需要判斷是否已經(jīng)超過了Index Last Key的范圍,若超過,則當(dāng)前查詢結(jié)束;

Index Filter,用于過濾索引查詢范圍中不滿足查詢條件的記錄,因此對于索引范圍中的每一條記錄,均需要與Index Filter進行對比,若不滿足Index Filter則直接丟棄,繼續(xù)讀取索引下一條記錄;

Table Filter,這是最后一道where條件的防線,用于過濾通過前面索引的層層考驗的記錄,此時的記錄已經(jīng)滿足了Index First Key與Index Last Key構(gòu)成的范圍,并且滿足Index Filter的條件,回表讀取了完整的記錄,判斷完整記錄是否滿足Table Filter中的查詢條件,同樣的,若不滿足,跳過當(dāng)前記錄,繼續(xù)讀取索引的下一條記錄,若滿足,則返回記錄,此記錄滿足了where的所有條件,可以返回給前端用戶

分析

一條sql語句要執(zhí)行完成需要經(jīng)歷什么樣的過程?

當(dāng)一條sql語句提交給mysql數(shù)據(jù)庫進行查詢的時候需要經(jīng)歷以下幾步:

1、先在where解析這一步把當(dāng)前的查詢語句中的查詢條件分解成每一個獨立的條件單元;

2、mysql會自動將sql拆分重組;

3、然后where條件會在B-tree index這部分進行索引匹配,如果命中索引,就會定位到指定的table records位置。如果沒有命中,則只能采用全部掃描的方式;

4、根據(jù)當(dāng)前查詢字段返回對應(yīng)的數(shù)據(jù)值。

感謝各位的閱讀,以上就是“mysql索引命中規(guī)則的說明”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對mysql索引命中規(guī)則的說明這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

新聞標(biāo)題:mysql索引命中規(guī)則的說明-創(chuàng)新互聯(lián)
新聞來源:http://jinyejixie.com/article40/dseoho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、動態(tài)網(wǎng)站網(wǎng)站制作、網(wǎng)站設(shè)計、商城網(wǎng)站、Google

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)
梨树县| 利川市| 封丘县| 中江县| 洪湖市| 荆门市| 云阳县| 巴塘县| 中方县| 兴国县| 开鲁县| 深水埗区| 舟曲县| 绥江县| 镇平县| 江西省| 灯塔市| 越西县| 响水县| 延长县| 于都县| 波密县| 砀山县| 遂溪县| 兴海县| 进贤县| 百色市| 大姚县| 泾川县| 旬邑县| 吉隆县| 泸定县| 临桂县| 冕宁县| 新泰市| 云南省| 应城市| 井冈山市| 晋江市| 长春市| 玛曲县|