日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

主码索引、聚集索引、非主码索引(辅助索引)、唯一索引、外键索引、复合索引、非主码索引、聚集主码(聚集索引)、单列索引、多列索引、普通索引等...

發布時間:2025/4/14 编程问答 13 豆豆

?   強烈建議看了第一個參考文獻再來看這個篇博文,因為此處不準備講底層數據結構的實現。

?  索引:索引(Index)是幫助MySQL高效獲取數據的數據結構。提取句子主干,就可以得到索引的本質:索引是數據結構。其表達的是存儲引擎的范疇,也就是說只有在存儲引擎級別談索引才有意義。MyISAM、InnoDB、Memory等。此處單純就InnoDB存儲引擎討論。

  需要提前掌握B-TREE、B+TREE數據結構。注意B+樹“掃庫”的功能。

  在數據之外,數據庫系統還維護著滿足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就可以在這些數據結構上實現高級查找算法。這種數據結構,就是索引

1、主碼索引:就是在主碼基礎上建立的索引。primary key。在InnoDB中,表數據文件本身就是按B+Tree組織的一個索引結構,這棵樹的葉節點data域保存了完整的數據記錄。這個索引的key是數據表的主鍵,因此InnoDB表數據文件本身就是主索引。又稱主碼索引,聚集主碼。

  此處的主索引又分為有序主碼索引(例如id自增),和不按序排列的索引(例如name-varchar類型),此時對填充因子影響特別大。 

2、聚集主碼。為什么主碼索引(主索引)又稱為聚集主碼。此處的聚集其實是指數據文件與索引聚集在葉子節點,而不是像MyISAM中葉子節點存儲的是數據文件的地址。可以看到葉節點包含了完整的數據記錄。這種索引叫做聚集索引。因為InnoDB的數據文件本身要按主鍵聚集,所以InnoDB要求表必須有主鍵 (MyISAM可以沒有),如果沒有顯式指定,則MySQL系統會自動選擇一個可以唯一標識數據記錄的列作為主鍵,如果不存在這種列,則MySQL自動為 InnoDB表生成一個隱含字段作為主鍵,這個字段長度為6個字節,類型為長整形。

  聚集索引:每個表至多一個聚集索引,術語“聚集”指實際的數據行和相關的鍵值都保存在一起。聚集索引不是一種單獨的索引類型,而是一種存儲數據方式。其具體細節依賴于實現方式,但是InnoDB的聚集索引實際上在同樣的結構中保存了B-Tree索引和數據行。當表有聚集索引的時候,它的數據行實際保存在索引的葉子頁中。每個表只能有一個聚集索引,因為不能一次把行保存在兩個地方。(但是,覆蓋索引可以模擬多個聚集索引)。

當前,SolidDB和InnoDB是唯一支持聚集索引的存儲引擎。InnoDB按照主鍵進行聚集,如果沒有定義主鍵,InnoDB會試著使用唯一的非空索引來代替。如果沒有這種索引,InnoDB就會定義隱藏的主鍵然后在上面進行聚集。

3、輔助索引。輔助索引是相對于主碼索引而言的。在MyISAM中,輔助索引的結構和主碼索引的結構是一樣的,都是采用的是B+樹結構,且葉子節點存儲的都是數據記錄的地址。而InnoDB中雖然也采用的是B+樹存儲,但是輔助索引的葉子節點存儲的是對應于主碼索引的主鍵。也就是說如果你通過輔助索引查找數據,要先在B+樹中查找到主鍵,然后根據主索引查找到對應的記錄,查找兩次

4、非主碼索引。又稱非主索引和輔助索引,同上面輔助索引。

  注:要求主碼列數據長度不能太長,因為輔助索引中葉子節點存儲主鍵值,太長會導致輔助索引的額外存儲空間太大。

  

5、唯一索引。唯一索引就是指列的值唯一,建立起來的索引,數據完整性檢查。主索引肯定是唯一索引。一張表中可以有多個唯一索引,并且可以為NULL的列也可以建立唯一索引(NULL!=NULL),但是一張表中只能有一個主索引(主鍵唯一),并且該列不能為NULL,如果定義了AUTO INCREMENT列,該列必須是主索引的一部分。

6、外鍵索引。外鍵索引其實就是主索引或者輔助索引,主要用于表之間的連接操作等與外鍵有關的操作。如果為某個外鍵字段定義了一個外鍵約束條件,MySQL就會定義一個內部索引來幫助自己以最有效率的方式去管理和使用外鍵約束條件。目前MySQL默認的存儲引擎中,只有InnoDB支持外鍵約束且不要求存在對應列的索引,但是通常考慮效率都應加上。

7、全文索引。文本字段上的普通索引只能加快對出現在字段內容最前面的字符串(也就是字段內容開頭的字符)進行檢索操作。如果字段里存放的是由幾個、甚至是多個單詞構成的較大段文字,普通索引就沒什么作用了。這種檢索往往以LIKE %word%的形式出現,這對MySQL來說很復雜,如果需要處理的數據量很大,響應時間就會很長。這類場合正是全文索引(full-text index)可以大顯身手的地方。在生成這種類型的索引時,MySQL將把在文本中出現的所有單詞創建為一份清單,查詢操作將根據這份清單去檢索有關的數 據記錄。全文索引即可以隨數據表一同創建,也可以等日后有必要時再使用下面這條命令添加:
ALTER TABLE tablename ADD FULLTEXT(column1, column2)
有了全文索引,就可以用SELECT查詢命令去檢索那些包含著一個或多個給定單詞的數據記錄了。下面是這類查詢命令的基本語法:
SELECT * FROM tablename
WHERE MATCH(column1, column2) AGAINST(‘word1′, ‘word2′, ‘word3′)
上面這條命令將把column1和column2字段里有word1、word2和word3的數據記錄全部查詢出來。
注解:InnoDB數據表5.6之前不支持全文索引。

8、復合索引。又稱混合索引或連接索引。符合索引其實就是多列索引。就是在幾個列的基礎上建立索引,其中復合索引的第一個列可以充當單列索引使用order by、group by等。當使用復合索引的時候,交換列的順序可能會創建更好的索引。

9、覆蓋索引。指滿足了查詢中給定表用到的所有的列。where子句、order by、group by以及select語句中的所有的列,全覆蓋。

  覆蓋索引適合那些很多主碼較小長度和外鍵約束的大型規范化約束來說是理想的優化方式。因為InnoDB數據庫中主碼的值會被附加在非主碼索引的每個對應的葉子節點的后面。

10、單列索引。是個統稱。上述的主碼索引、唯一鍵索引、外鍵索引、聚集主碼、聚集索引、主索引等等,除了多列索引和聚合索引其他都屬于單列索引。

11、普通索引。就是不是主索引、唯一索引等的索引。

參考文獻:

  1、MySQL索引背后的數據結構及算法原理

  2、mysql索引的類型和優缺點

  3、[轉]mysql索引結構原理、性能分析與優化

  4、mysql索引之聚集索引

轉載于:https://www.cnblogs.com/xiangyangzhu/p/index.html

總結

以上是生活随笔為你收集整理的主码索引、聚集索引、非主码索引(辅助索引)、唯一索引、外键索引、复合索引、非主码索引、聚集主码(聚集索引)、单列索引、多列索引、普通索引等...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 97超碰福利 | 国产一二三四在线 | 亚洲天堂av一区二区 | 欧美一区二区区 | 亚洲av无码乱码在线观看性色 | 欧美性插视频 | 中日韩男男gay无套 人人草人人干 | 无码人妻精品一区二区三区夜夜嗨 | 日韩夜夜 | 在线视频这里只有精品 | 久久久网址 | 日韩欧美精品免费 | 手机成人在线视频 | 果冻传媒18禁免费视频 | 国产xxx视频 | 欧美午夜精品久久久久久蜜 | 波多野结衣视频一区二区 | 美女张开双腿让男人捅 | 欧美人与禽zozzo性之恋的特点 | 在线少妇 | 欧美黄色特级片 | 久久午夜影视 | exo妈妈mv在线播放免费 | 999国产精品视频免费 | 亚洲欧美高清在线 | 欧美日韩国产黄色 | 成人看片在线观看 | 国产欧美日韩另类 | 国产91绿帽单男绿奴 | 色八戒av| 国产乱码精品一区二三赶尸艳谈 | 丁香婷婷六月 | 亚洲色图吧 | 久草手机在线视频 | 国产黄色免费大片 | xxxx69国产| 天天久久综合网 | a在线视频| av网址观看| 精品在线观看一区 | 国产极品视频在线观看 | 亚洲精品在线视频 | 国产精品久久毛片 | 国产一区h| jzzijzzij日本成熟少妇 | 久久国产秒 | 日本学生初尝黑人巨免费视频 | 成人一区二区三区仙踪林 | 亚洲大尺度在线观看 | 欧美性生交xxxxx久久久 | 少妇太爽了太深了太硬了 | www.黄色网址 | av噜噜在线观看 | 在线观看黄色免费网站 | 日韩精品一区二区三区丰满 | 中文字幕欧美另类精品亚洲 | 中文字幕在线网址 | 国产高潮失禁喷水爽到抽搐 | 久久99精品久久久久久水蜜桃 | 艳母免费在线观看 | 五月天中文字幕 | 天天干天天插天天操 | 日日摸夜夜添夜夜添高潮喷水 | 美女露胸无遮挡 | 91大神在线免费观看 | 中文字幕人妻色偷偷久久 | 成人在线播放网站 | av爱爱爱 | 小说肉肉视频 | 一区在线免费观看 | 小少妇哺乳喂奶播放 | 亚洲国产精品成人久久蜜臀 | 超碰国产在线 | 久久国产精品久久久 | 国产精品成人Av | 亚洲色偷偷色噜噜狠狠99网 | 久久久视屏 | 精品成人在线观看 | 动漫精品一区 | 88福利视频| aaa一级黄色片 | 国产精品999999 | 欧美一级日韩一级 | 欧美韩日精品 | 国产精品欧美激情在线播放 | 婷婷色九月 | 99国产视频在线 | 涩涩视频免费看 | 免费91网站 | 91新视频 | 亚洲天堂av影院 | 激情视频网址 | a级片网址| 久久综合成人 | 夜晚福利 | 日韩大片一区 | 福利视频一区 | 大陆av在线播放 | 日本午夜一区二区三区 |