免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

mysql索引怎么回事 mysql索引失效的原因

Mysql InnoDB索引原理

理解Mysql索引的原理和數(shù)據(jù)結(jié)構(gòu)有助于我們更好的使用索引以及進(jìn)行SQL優(yōu)化,索引是在存儲(chǔ)引擎層面實(shí)現(xiàn)的,所以不同的引擎實(shí)現(xiàn)的索引也有一定的區(qū)別,但是在生產(chǎn)環(huán)境中,我們最常用的就是InnoDB引擎和B樹索引,OK,那本文要討論的重點(diǎn)也同樣是 InnoDB引擎下的B樹索引 。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都網(wǎng)站制作、樂業(yè)網(wǎng)絡(luò)推廣、微信小程序開發(fā)、樂業(yè)網(wǎng)絡(luò)營銷、樂業(yè)企業(yè)策劃、樂業(yè)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供樂業(yè)建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:newbst.com

我們建立一個(gè)表來進(jìn)行測試,表的DDL如下所示,我們要關(guān)注的是表t_book上的主鍵索引id和name author publish_date三列組成的索引test_index。

Mysql中的B樹索引是使用B+樹實(shí)現(xiàn)的,關(guān)于B+樹的數(shù)據(jù)結(jié)構(gòu)個(gè)人認(rèn)為美團(tuán)點(diǎn)評(píng)技術(shù)博客中Mysql索引原理及慢查詢優(yōu)化一文中介紹的非常詳實(shí),B+樹的數(shù)據(jù)結(jié)構(gòu)如下圖所示。

圖中淺藍(lán)色塊即磁盤塊,根節(jié)點(diǎn)磁盤塊中存儲(chǔ)17和35兩個(gè)數(shù)據(jù),其中指針P1指向小于17的數(shù)據(jù),指針P2指向大于17小于35的數(shù)據(jù),指針P3指向大于35的數(shù)據(jù)。顯然通過B+樹索引查詢數(shù)據(jù)與B+樹的高度有關(guān),如上圖的B+樹索引查找一個(gè)葉子節(jié)點(diǎn)的數(shù)據(jù)只需要三次磁盤IO,對(duì)于Mysql來說三層的B+樹可以索引上百萬的數(shù)據(jù),這對(duì)于查詢效率的提升是巨大的。

總結(jié)起來Mysql中B樹索引有以下關(guān)鍵特點(diǎn):

Mysql中的B樹索引有兩種數(shù)據(jù)存儲(chǔ)形式,一種為聚簇索引,一種為二級(jí)索引。

InnoDB一般會(huì)使用表的主鍵來作為聚簇索引,如果一個(gè)表沒有主鍵(不建議這么玩)InnoDB會(huì)選用一個(gè)唯一非空索引來代替,如果沒有這樣的索引,InnoDB會(huì)隱式建立一個(gè)聚簇索引。聚簇的含義即是數(shù)據(jù)行和相鄰的鍵值緊湊的存儲(chǔ)在一起,占據(jù)一塊連續(xù)的磁盤空間,因此通過聚簇索引訪問數(shù)據(jù)可以有效減少隨機(jī)IO,通常使用聚簇索引查找比非聚簇索引查找速度更快。以我們建立的表t_book為例,聚簇索引即為自增主鍵id,其B樹索引數(shù)據(jù)結(jié)構(gòu)可以用下圖來表示。

聚簇索引有以下關(guān)鍵特點(diǎn):

InnoDB的B樹索引中除了聚簇索引,就都是二級(jí)索引了,二級(jí)索引的含義是索引的葉子節(jié)點(diǎn)除了存儲(chǔ)了索引值,還存儲(chǔ)了主鍵id,在使用二級(jí)索引進(jìn)行查詢時(shí),查找到二級(jí)索引B樹上的葉子節(jié)點(diǎn)后還需要去聚簇索引上去查詢真實(shí)數(shù)據(jù),但是這里有一種特殊情況,即查詢所需的所有字段在二級(jí)索引中都可以獲取,此時(shí)就不需要再去回表查數(shù)據(jù)了,這種情況就是索引覆蓋(EXPLAIN中EXTRA列中會(huì)出現(xiàn)USING INDEX,本文只關(guān)注索引結(jié)構(gòu),不詳細(xì)討論索引覆蓋等技術(shù)的使用,如果深入理解索引的數(shù)據(jù)結(jié)構(gòu),索引覆蓋等技術(shù)也沒有那么神秘)。

在我們的測試表t_book中,test_index即為二級(jí)索引,由于我們把除了主鍵id所有的列都作為一個(gè)聯(lián)合索引,所以在這個(gè)表上的查詢都可以使用索引覆蓋技術(shù),但是具體生產(chǎn)環(huán)境中也不建議總是采用這種做法,索引列的增加也會(huì)增大插入更新數(shù)據(jù)時(shí)的索引更新成本,具體的優(yōu)化要視具體情況決策。t_book上的二級(jí)索引test_index的索引結(jié)構(gòu)由下圖表示。

通過以上結(jié)構(gòu),我們可以推斷出二級(jí)索引的以下關(guān)鍵特點(diǎn):

索引覆蓋:

最左前綴匹配:

二級(jí)索引可以說是我們在Mysql中最常用的索引,通過理解二級(jí)索引的索引結(jié)構(gòu)可以更容易理解二級(jí)索引的特性和使用。

最后聊點(diǎn)輕松的索引結(jié)構(gòu),哈希索引就是通過哈希表實(shí)現(xiàn)的索引,即通過被索引的列計(jì)算出哈希值,并指向被索引的記錄。

哈希索引有如下特性:

Mysql索引原理及慢查詢優(yōu)化

高性能Mysql 第三版

解釋mysql中什么是索引?它的作用是什么?

索引的意義 ·索引在數(shù)據(jù)庫中的作用相當(dāng)于目錄在書籍中的作用類似,都用來提高查找信息的速度。 ·索引是一個(gè)表中所包含值的列表,其中注明了表中包含各個(gè)值的行所在的存儲(chǔ)位置,使用索引查找數(shù)據(jù)時(shí),先從索引對(duì)象中獲得相關(guān)列的存儲(chǔ)位置,然后再直接去其存儲(chǔ)位置查找所需信息,這樣就無需對(duì)這個(gè)表進(jìn)行掃描,從而可以快速的找到所需數(shù)據(jù)。

mysql索引有什么用?

先正面回答你的問題

數(shù)據(jù)是否重復(fù)不是建立索引的重要依據(jù),甚至都不是依據(jù)。

只要不完全重復(fù)(所有元組的該元素都一樣),那么建立索引就是有意義的。

即使當(dāng)前數(shù)據(jù)完全重復(fù),也不是不能建立索引,這種情況有點(diǎn)復(fù)雜,不細(xì)說了。

對(duì)于你后面的疑問,可以給你一個(gè)如何建立索引的忠告,“如何查就如何建”。

索引的建立,唯一的原因就是為了查詢(廣義的查詢),實(shí)際上建立索引會(huì)使得數(shù)據(jù)存儲(chǔ)所占空間變大,有時(shí)索引所占的空間會(huì)查過數(shù)據(jù)本身的空間。索引的建立也會(huì)使得數(shù)據(jù)插入時(shí)變慢,特殊情況下,慢的難以忍受,所以dba的重要工作之一,就是檢查索引層級(jí)并優(yōu)化。

索引建立的唯一好處,就是按照索引查詢時(shí),變快了。type,status這2個(gè)字段是否適合建立索引,就要看你是否要按照這2個(gè)字段進(jìn)行檢索。而檢索的順序決定了如何建立索引。

對(duì)于索引類型和索引方式,我建議就

normal

btree

就適用于大多數(shù)情況。若你參與的是一個(gè)大數(shù)據(jù)處理項(xiàng)目,對(duì)數(shù)據(jù)存儲(chǔ)和檢索有特別要求,那么需要分析多個(gè)層面,比如數(shù)據(jù)吞吐量、數(shù)據(jù)的方差、平均差等等很多參數(shù)才考慮是否用聚集索引等(mysql好像還沒聚集索引),至于是否是唯一索引,我建議不使用,即使能判定數(shù)據(jù)是唯一的也不要用,全文索引也沒有必要。

MySQL 索引是怎么實(shí)現(xiàn)的?

索引是滿足某種特定查找算法的數(shù)據(jù)結(jié)構(gòu),而這些數(shù)據(jù)結(jié)構(gòu)會(huì)以某種方式指向數(shù)據(jù),從而實(shí)現(xiàn)高效查找數(shù)據(jù)。

具體來說 MySQL 中的索引,不同的數(shù)據(jù)引擎實(shí)現(xiàn)有所不同,但目前主流的數(shù)據(jù)庫引擎的索引都是 B+ 樹實(shí)現(xiàn)的,B+ 樹的搜索效率,可以到達(dá)二分法的性能,找到數(shù)據(jù)區(qū)域之后就找到了完整的數(shù)據(jù)結(jié)構(gòu)了,所有索引的性能也是更好的。

文章名稱:mysql索引怎么回事 mysql索引失效的原因
轉(zhuǎn)載來源:http://newbst.com/article16/doihpdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、搜索引擎優(yōu)化、電子商務(wù)、外貿(mào)建站服務(wù)器托管

廣告

聲明:本網(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)

微信小程序開發(fā)