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

mysql聯(lián)合索引詳解

這篇具有很好參考價值的文章主要介紹了mysql聯(lián)合索引詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

比較簡單的是單列索引(b+tree)。遇到多條件查詢時,不可避免會使用到多列索引。聯(lián)合索引又叫復合索引。

b+tree結(jié)構(gòu)如下:

每一個磁盤塊在mysql中是一個頁,頁大小是固定的,mysql innodb的默認的頁大小是16k,每個索引會分配在頁上的數(shù)量是由字段的大小決定。當字段值的長度越長,每一頁上的數(shù)量就會越少,因此在一定數(shù)據(jù)量的情況下,索引的深度會越深,影響索引的查找效率。

mysql組合索引,mysql,數(shù)據(jù)庫,sql

對于復合索引(多列b+tree,使用多列值組合而成的b+tree索引)。遵循最左側(cè)原則,從左到右的使用索引中的字段,一個查詢可以只使用索引中的一部份,但只能是最左側(cè)部分。例如索引是key index (a,b,c). 可以支持a a,b a,b,c 3種組合進行查找,但不支持 b,c進行查找。當使用最左側(cè)字段時,索引就十分有效。

創(chuàng)建表test如下:

create table test(

a int,

b int,

c int,

KEY a(a,b,c)

);

比如(a,b,c)的時候,b+數(shù)是按照從左到右的順序來建立搜索樹的,比如當(a=? and b=? and c=?)這樣的數(shù)據(jù)來檢索的時候,b+樹會優(yōu)先比較a列來確定下一步的所搜方向,如果a列相同再依次比較b列和c列,最后得到檢索的數(shù)據(jù);但當(b=? and c=?)這樣的沒有a列的數(shù)據(jù)來的時候,b+樹就不知道下一步該查哪個節(jié)點,因為建立搜索樹的時候a列就是第一個比較因子,必須要先根據(jù)a列來搜索才能知道下一步去哪里查詢。比如當(a=? and c=?)這樣的數(shù)據(jù)來檢索時,b+樹可以用a列來指定搜索方向,但下一個字段b列的缺失,所以只能把a列的數(shù)據(jù)找到,然后再匹配c列的數(shù)據(jù)了, 這個是非常重要的性質(zhì),即索引的最左匹配特性。

以下通過例子分析索引的使用情況,以便于更好的理解聯(lián)合索引的查詢方式和使用范圍。

一、多列索引在and查詢中應用

select * from test where a=? and b=? and c=?;查詢效率最高,索引全覆蓋。

select * from test where a=? and b=?;索引覆蓋a和b。

select * from test where b=? and a=?;經(jīng)過mysql的查詢分析器的優(yōu)化,索引覆蓋a和b。

select * from test where a=?;索引覆蓋a。

select * from test where b=? and c=?;沒有a列,不走索引,索引失效。

select * from test where c=?;沒有a列,不走索引,索引失效。

二、多列索引在范圍查詢中應用

select * from test where a=? and b between ? and ? and c=?;索引覆蓋a和b,因b列是范圍查詢,因此c列不能走索引。

select * from test where a between ? and ? and b=?;a列走索引,因a列是范圍查詢,因此b列是無法使用索引。

select * from test where a between ? and ? and b between ? and ? and c=?;a列走索引,因a列是范圍查詢,b列是范圍查詢也不能使用索引。

三、多列索引在排序中應用

select * from test where a=? and b=? order by c;a、b、c三列全覆蓋索引,查詢效率最高。

select * from test where a=? and b between ? and ? order by c;a、b列使用索引查找,因b列是范圍查詢,因此c列不能使用索引,會出現(xiàn)file sort。

四,總結(jié)

聯(lián)合索引的使用在寫where條件的順序無關(guān),mysql查詢分析會進行優(yōu)化而使用索引。但是減輕查詢分析器的壓力,最好和索引的從左到右的順序一致。

使用等值查詢,多列同時查詢,索引會一直傳遞并生效。因此等值查詢效率最好。

索引查找遵循最左側(cè)原則。但是遇到范圍查詢列之后的列索引失效。

排序也能使用索引,合理使用索引排序,避免出現(xiàn)file sort。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-624604.html

到了這里,關(guān)于mysql聯(lián)合索引詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關(guān)文章

  • SQL Server數(shù)據(jù)庫 -- 索引與視圖

    SQL Server數(shù)據(jù)庫 -- 索引與視圖

    一、索引 聚集索引 非聚集索引 二、視圖 三、自定義函數(shù) 標量函數(shù) 表值函數(shù) 四、游標 五、總結(jié) 在學習完創(chuàng)建庫表、查詢等知識點后,為了更加方便優(yōu)化數(shù)據(jù)庫的存儲和內(nèi)容,我們需要學習一系列的方法例如索引與視圖等等,從而使我們更加熟練和使用數(shù)據(jù)庫,突破表面,

    2024年02月14日
    瀏覽(88)
  • 【數(shù)據(jù)庫概論】第三章 SQL簡述、數(shù)據(jù)定義和索引

    最早在IBM的關(guān)系數(shù)據(jù)庫管理系統(tǒng)原型SystemR上實現(xiàn),后來美國國家標準局(ANSI)批準SQL作為關(guān)系數(shù)據(jù)庫語言的美國標準,同年公布了SQL標準文本。近些年來SQL標準的內(nèi)容越來越豐富和復雜。目前沒有任何一個數(shù)據(jù)庫系統(tǒng)能夠支持SQL標準的所有概念和特性,同時不少軟件廠商對

    2024年02月05日
    瀏覽(20)
  • GaussDB云數(shù)據(jù)庫SQL應用系列—索引管理

    GaussDB云數(shù)據(jù)庫SQL應用系列—索引管理

    目錄 一、前言 二、注意事項 三、索引創(chuàng)建 1、創(chuàng)建普通索引 2、創(chuàng)建唯一索引 3、創(chuàng)建多字段索引 4、創(chuàng)建部分索引 5、創(chuàng)建表達式索引 四、索引管理 1、查看索引信息 2、刪除索引 總結(jié) 隨著互聯(lián)網(wǎng)的快速發(fā)展,數(shù)據(jù)量呈現(xiàn)爆炸式增長。如何高效地管理和查詢這些數(shù)據(jù)成為了

    2024年02月09日
    瀏覽(96)
  • MySQL數(shù)據(jù)庫:索引

    MySQL數(shù)據(jù)庫:索引

    ????????索引是一種特殊的文件,包含著對數(shù)據(jù)表里所有記錄的引用指針??梢詫Ρ碇械囊涣谢蚨嗔袆?chuàng)建索引,并指定索引的類型,各類索引有各自的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)。 ? ? ? ? 相當于是給數(shù)據(jù)庫中的數(shù)據(jù)建立了一個目錄,通過目錄可以知道數(shù)據(jù)所在位置,然后到指定位置

    2023年04月17日
    瀏覽(93)
  • 【MySql】數(shù)據(jù)庫索引

    【MySql】數(shù)據(jù)庫索引

    可以簡單理解為一本書的目錄信息,是為了提升查找效率而建立的 1、在創(chuàng)建一個主鍵、唯一鍵、外鍵時候,數(shù)據(jù)庫會自動地針對查找字段設置索引; 2、在創(chuàng)建表時侯,使用 index 進行普通索引的聲明 3、修改表結(jié)構(gòu),給指定的字段添加索引 alter table 表名 add index 索引名

    2024年02月03日
    瀏覽(94)
  • MySQL數(shù)據(jù)庫索引機制

    MySQL數(shù)據(jù)庫索引機制

    MySQL是一款有客戶端和服務端的網(wǎng)絡應用,mysql是它的客戶端,mysqld是它的服務端。服務端本質(zhì)就是一個進程,它存在于內(nèi)存當中。而我們存儲在MySQL中的數(shù)據(jù)是保存在磁盤上的,當我們對MySQL中數(shù)據(jù)進行增刪查改操作時,不可能是直接在磁盤上進行操作,而是將對應的數(shù)據(jù)加

    2024年02月12日
    瀏覽(100)
  • MySQL數(shù)據(jù)庫唯一索引

    MySQL數(shù)據(jù)庫唯一索引

    創(chuàng)建索引是指在某個表的一列或多列上建立一個索引,以便提高對表的訪問速度。創(chuàng)建索引有3種方式,分別是1.創(chuàng)建表的時候創(chuàng)建索引、2.在已經(jīng)存在的表上創(chuàng)建索引和使用3.ALTER TABLE語句來創(chuàng)建索引。 本文福利, 莬 費領取Qt開發(fā)學習資料包、技術(shù)視頻,內(nèi)容包括(C++語言基

    2024年02月08日
    瀏覽(96)
  • MySQL數(shù)據(jù)庫索引的數(shù)據(jù)結(jié)構(gòu)

    數(shù)據(jù)庫索引的功能就是讓查找更加的高效,所以索引的數(shù)據(jù)結(jié)構(gòu)應該是能夠加速查找的數(shù)據(jù)結(jié)構(gòu)。 MySQL的innoDB存儲引擎的索引的數(shù)據(jù)結(jié)構(gòu)就是多叉搜索樹中的b+樹,這可以說是為索引量身定做的一個數(shù)據(jù)結(jié)構(gòu)。 首先,索引可以通過主鍵,unique修飾創(chuàng)建,也可以直接使用sql語句

    2024年02月10日
    瀏覽(31)
  • 簡單認識MySQL數(shù)據(jù)庫索引

    簡單認識MySQL數(shù)據(jù)庫索引

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 ●索引是一個排序的列表,在這個列表中存儲著索引的值和包含這個值的數(shù)據(jù)所在行的物理地址(類似于C語言的鏈表通過指針指向數(shù)據(jù)記錄的內(nèi)存地址)。 ●使用索引后可以不用掃描全表來定位某行的

    2024年02月16日
    瀏覽(30)
  • 【MySQL數(shù)據(jù)庫 | 第十七篇】索引以及索引結(jié)構(gòu)介紹

    【MySQL數(shù)據(jù)庫 | 第十七篇】索引以及索引結(jié)構(gòu)介紹

    目錄 前言: 索引簡介:? 索引結(jié)構(gòu): ? ? ? ? ??二叉樹索引結(jié)構(gòu) ? ? ? ??Tree(普通二叉樹) ? ? ? ??B-Tree(多路平衡查找樹) ? ? ? ??B+Tree ? ? ? ???哈希索引數(shù)據(jù)結(jié)構(gòu) 總結(jié): 在實際生活中,我們對SQL語句進行優(yōu)化實際上有很大一部分都是對索引進行優(yōu)化,因此對索引

    2024年02月09日
    瀏覽(40)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包