国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL查詢性能優(yōu)化——索引分類(二)

這篇具有很好參考價值的文章主要介紹了MySQL查詢性能優(yōu)化——索引分類(二)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、索引分類

? 1.按存儲引擎存儲形式分類??

? 1.1聚集索引

? ?1.1.1聚集索引結(jié)構(gòu)

? 1.2 二級索引

?1.2.1二級索引結(jié)構(gòu)

2.按數(shù)據(jù)庫分類

?2.1 主鍵索引?

?2.2 唯一索引

?2.3 常規(guī)索引

?2.4 聯(lián)合索引

?2.5 全文索引


上一期說到索引的原理其實就是B+樹,這期我們來聊一下索引的分類。

一、索引分類

? 1.按存儲引擎存儲形式分類??

? ?按存儲引擎存儲形式可以分為聚集索引二級索引,這兩種索引也是索引的兩大類。

? 1.1聚集索引

? 將數(shù)據(jù)與索引存儲到一塊,索引結(jié)構(gòu)的葉子節(jié)點存儲行數(shù)據(jù)。聚集索引有且只能有一個,我們常說的主鍵就是聚集索引。

? 聚集索引的選取規(guī)則:

  1. 如果存在主鍵,那么主鍵就是聚集索引。

  2. 如果主鍵不存在,那么第一個唯一索引將作為聚集索引。

  3. 如果沒有唯一索引,存儲引擎Innodb將自動生成一個rowid作為隱藏的聚集索引。

? ?1.1.1聚集索引結(jié)構(gòu)

? ?可以看到葉子節(jié)點下分別都掛載了行數(shù)據(jù),這就是我們在上面所說的索引與數(shù)據(jù)存儲到一起,如下圖所示:

MySQL查詢性能優(yōu)化——索引分類(二),mysql,性能優(yōu)化,數(shù)據(jù)庫,數(shù)據(jù)結(jié)構(gòu),b+樹

?? 執(zhí)行一條語句,來看下查找的過程是怎么樣的:

?select?* from?user where id='12';?

MySQL查詢性能優(yōu)化——索引分類(二),mysql,性能優(yōu)化,數(shù)據(jù)庫,數(shù)據(jù)結(jié)構(gòu),b+樹

? 通過聚集索引,可以快速找到行數(shù)據(jù)。

? 1.2 二級索引

? ?將數(shù)據(jù)與索引分開存儲,索引結(jié)構(gòu)的葉子節(jié)點存儲的是對應(yīng)的主鍵。

? ?除了主鍵索引,其他都是二級索引,二級索引可以有多個。

? ?下面通過兩張圖來了解聚集索引和二級索引是如何存儲行數(shù)據(jù)和主鍵:

MySQL查詢性能優(yōu)化——索引分類(二),mysql,性能優(yōu)化,數(shù)據(jù)庫,數(shù)據(jù)結(jié)構(gòu),b+樹

? 在最左邊我們可以看到有三列數(shù)據(jù),假設(shè)這張表為user,對應(yīng)的字段分別為id,name,gender,id作為主鍵,name字段添加了二級索引,我們先來看最上面的聚集索引:

?1.2.1二級索引結(jié)構(gòu)

??索引結(jié)構(gòu)的葉子節(jié)點存儲的是對應(yīng)的主鍵,如下圖所示:

MySQL查詢性能優(yōu)化——索引分類(二),mysql,性能優(yōu)化,數(shù)據(jù)庫,數(shù)據(jù)結(jié)構(gòu),b+樹

? 當通過name作為條件去檢索數(shù)據(jù)時:

select * from user where?name='Arm';

??查詢過程如下:

MySQL查詢性能優(yōu)化——索引分類(二),mysql,性能優(yōu)化,數(shù)據(jù)庫,數(shù)據(jù)結(jié)構(gòu),b+樹

  1. 第一步,通過Arm去檢索,Arm首先Lee進行對比,A小于L,往左走。

  2. 第二步,Arm再和Geek對比,A小于G,繼續(xù)往左走。

  3. 第三步,Arm等于Arm,再通過Arm下掛載的主鍵(10)去聚集索引下找。

  4. 最后找到主鍵10,主鍵10下掛載著對應(yīng)的行數(shù)據(jù)。

這就是通過二級索引去檢索的過程,相比于主鍵索引,二級索引的檢索出現(xiàn)了回表。

那么什么是回表呢?

回表就是通過二級索引找到主鍵值,再通過主鍵值找到行數(shù)據(jù)。

從上圖可以看出,二級索引的檢索效率會低于主鍵索引,那么如何解決回表的問題呢?我們在下期二級索引的使用中會說到。

2.按數(shù)據(jù)庫分類

? 按照數(shù)據(jù)庫可以分為主鍵索引、唯一索引、常規(guī)索引、聯(lián)合索引、全文索引。

? 除了主鍵索引為第1點所說的聚集索引,其他均為二級索引。

?2.1 主鍵索引?

? 即聚集索引。主鍵索引有且只有一個,關(guān)鍵字primary,主鍵索引是查詢效率最高的索引。

創(chuàng)建語法:

create primary index on table_name(column);

?2.2 唯一索引

? 唯一索引可以避免字段值不重復,可以有多個,關(guān)鍵字unique。

? 創(chuàng)建語法:

create unique?index on table_name(column);

?2.3 常規(guī)索引

? 我們常定義的索引只要不加上某個關(guān)鍵字都是常規(guī)索引。

? 創(chuàng)建語法:

create?index on table_name(column);

?2.4 聯(lián)合索引

? 一個索引創(chuàng)建在多個列上。

? 創(chuàng)建語法:

create?index on?table_name(column1,column2);

?2.5 全文索引

? 全文索引檢索的是文本中的關(guān)鍵字,而不是比較值,常用于海量數(shù)據(jù)的模糊查詢。

? 創(chuàng)建語法:

create fulltext?index on?table_name(column1,column2);

?全文索引的使用語法和其他不一樣,如上給column1,column2創(chuàng)建了全文索引。

?使用方法:

select * from?tale_name?where match(column1,column2) against('值1','值2');

match()函數(shù)指定的列和創(chuàng)建全文索引的列要完全匹配,否則會報錯,against匹配的為要查詢的值

? 總結(jié):

  1. 按存儲形式可將索引分為聚集索引和二級索引,聚集索引和二級索引的結(jié)構(gòu)及查詢的過程。

  2. 二級索引產(chǎn)生回表的問題.

  3. 按數(shù)據(jù)庫分類的5種索引及創(chuàng)建語法。

? ? 這一期索引分類、索引的存儲結(jié)構(gòu)分享到這里,我們下一期來聊索引的使用及如何解決回表的問題,下期見!

???公眾號:【積極向上的阿蟲】文章來源地址http://www.zghlxwxcb.cn/news/detail-815786.html

到了這里,關(guān)于MySQL查詢性能優(yōu)化——索引分類(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • MySQL索引:讓你的數(shù)據(jù)庫查詢快到起飛!

    MySQL索引:讓你的數(shù)據(jù)庫查詢快到起飛!

    ??世界上最美好的東西之一,就是你每天都有機會開始全新的一天。?? ??作者:不能再留遺憾了?? ??專欄:MySQL學習?? ??本文章主要內(nèi)容:詳細介紹如何查看、創(chuàng)建和刪除MySQL索引,以及MySQL索引的底層原理:B+樹。?? 各位朋友們,大家好!前面我們已經(jīng)介紹了MySQL的庫

    2024年02月09日
    瀏覽(18)
  • 【MySQL索引與優(yōu)化篇】數(shù)據(jù)庫的設(shè)計規(guī)范

    【MySQL索引與優(yōu)化篇】數(shù)據(jù)庫的設(shè)計規(guī)范

    在關(guān)系型數(shù)據(jù)庫中,關(guān)于數(shù)據(jù)表設(shè)計的基本原則、規(guī)則就稱為范式 。范式的英文名稱是 Normal Form ,簡稱 NF 。它是英國人 E.F.Codd 在上個世紀70年代提出關(guān)系數(shù)據(jù)庫模型后總結(jié)出來的。范式是關(guān)系數(shù)據(jù)庫理論的基礎(chǔ),也是我們在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)過程中所要遵循的 規(guī)則 和 指導方

    2024年02月05日
    瀏覽(34)
  • 深入解析MySQL視圖、索引、數(shù)據(jù)導入導出:優(yōu)化查詢和提高效率

    深入解析MySQL視圖、索引、數(shù)據(jù)導入導出:優(yōu)化查詢和提高效率

    目錄 1. 視圖(View): 什么是視圖? 為什么要使用視圖? 視圖的優(yōu)缺點 1) 定制用戶數(shù)據(jù),聚焦特定的數(shù)據(jù) 2) 簡化數(shù)據(jù)操作 3) 提高數(shù)據(jù)的安全性 4) 共享所需數(shù)據(jù) 5) 更改數(shù)據(jù)格式 6) 重用 SQL 語句 示例操作 沒使用前 使用后 2. 索引(Index): 什么是索引? 為什么要使用索引?

    2024年02月13日
    瀏覽(39)
  • MySQL數(shù)據(jù)庫進階第二篇(索引,SQL性能分析,使用規(guī)則)

    MySQL數(shù)據(jù)庫進階第二篇(索引,SQL性能分析,使用規(guī)則)

    本篇博客深入詳細地介紹了數(shù)據(jù)庫索引的概念和重要性。內(nèi)容包含:索引的概念和目標、索引的優(yōu)點與缺點。此外,博客還深入解析了三種主要的索引結(jié)構(gòu):B-Tree、B+Tree和Hash,提供了詳細的結(jié)構(gòu)解析和優(yōu)化方法,并通過插圖進一步增強了理解。 博客的部分內(nèi)容專注于對B-Tr

    2024年02月21日
    瀏覽(114)
  • MySQL數(shù)據(jù)庫性能優(yōu)化技巧介紹

    MySQL數(shù)據(jù)庫性能優(yōu)化技巧介紹

    MySQL是目前最流行和廣泛使用的開源關(guān)系型數(shù)據(jù)庫之一,隨著數(shù)據(jù)量的增長和訪問負載的提高,優(yōu)化數(shù)據(jù)庫性能變得至關(guān)重要,以確保系統(tǒng)能夠高效地處理大量的并發(fā)請求。本文將記錄一些MySQL數(shù)據(jù)庫性能優(yōu)化的技巧,提高數(shù)據(jù)庫的運行效率,提升系統(tǒng)性能。 對于MySQL,最簡單

    2024年02月08日
    瀏覽(51)
  • 數(shù)據(jù)庫——MySQL高性能優(yōu)化規(guī)范

    所有數(shù)據(jù)庫對象名稱必須使用小寫字母并用下劃線分割 所有數(shù)據(jù)庫對象名稱禁止使用 MySQL 保留(如果表名中包含查詢時,需要將其用單引號括起來) 數(shù)據(jù)庫對象的命名要能做到見名識意,并且最后不要超過 32 個字符 臨時庫表必須以 tmp_為前綴并以日期為后綴,

    2024年02月11日
    瀏覽(50)
  • MySQL數(shù)據(jù)庫進行性能優(yōu)化的思路

    對MySQL數(shù)據(jù)庫進行性能優(yōu)化的思路可以涵蓋以下方面: 索引優(yōu)化: 索引是提高查詢性能的關(guān)鍵。確保表中的關(guān)鍵列和經(jīng)常用于查詢條件的列都被適當?shù)貏?chuàng)建了索引。可以使用 CREATE INDEX 語句添加索引,或者使用 ALTER TABLE 語句在已有表上添加索引。例如,對于一個用戶表中的

    2024年02月06日
    瀏覽(25)
  • 【MySQL索引與優(yōu)化篇】數(shù)據(jù)庫設(shè)計實操(含ER模型)

    【MySQL索引與優(yōu)化篇】數(shù)據(jù)庫設(shè)計實操(含ER模型)

    1.1 概述 ER 模型中有三個要素,分別是 實體、屬性和關(guān)系 實體 ,可以看做是數(shù)據(jù)對象,往往對應(yīng)于現(xiàn)實生活中的真實存在的個體。在 ER 模型中,用 矩形 來表示。實體分為兩類,分別是 強實體 和 弱實體 。強實體是指不依賴于其他實體的實體;弱實體是指對另一個實體有很

    2024年02月06日
    瀏覽(20)
  • MySQL數(shù)據(jù)庫內(nèi)存配置與性能優(yōu)化:合理分配內(nèi)存,提升數(shù)據(jù)庫性能

    MySQL數(shù)據(jù)庫內(nèi)存配置與性能優(yōu)化:合理分配內(nèi)存,提升數(shù)據(jù)庫性能

    ???????? 引言 :MySQL是廣泛使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),而合理配置數(shù)據(jù)庫的內(nèi)存是保障其高性能運行的關(guān)鍵之一.本文將介紹如何根據(jù)MySQL數(shù)據(jù)庫內(nèi)存值大小來定義,以及這樣配置如何影響數(shù)據(jù)庫的性能 ? 內(nèi)存配置的基本原則 : innodb_buffer_pool_size :該參數(shù)定義了InnoDB存儲引擎

    2024年02月22日
    瀏覽(25)
  • MySQL——性能優(yōu)化與關(guān)系型數(shù)據(jù)庫

    MySQL——性能優(yōu)化與關(guān)系型數(shù)據(jù)庫

    吞吐與延遲:有些結(jié)論是反直覺的,指導我們關(guān)注什么。 沒有量化就沒有改進:監(jiān)控與度量指標,指導我們怎么去入手。 80/20原則:先優(yōu)化性能瓶頸問題,指導我們?nèi)绾稳?yōu)化。 過早的優(yōu)化是萬惡之源:指導我們要選擇優(yōu)化的時機。 脫離場景談性能都是耍流氓:指導我們對

    2024年02月01日
    瀏覽(40)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包