溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql索引的工作原理

發(fā)布時(shí)間:2020-11-23 14:58:13 來(lái)源:億速云 閱讀:214 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

小編給大家分享一下mysql索引的工作原理,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

MySQL中索引的簡(jiǎn)介

在MySQL中,索引(index)也叫做“鍵(key)”,它是存儲(chǔ)引擎用于快速找到記錄的一種數(shù)據(jù)結(jié)構(gòu)。

索引對(duì)于良好的性能非常關(guān)鍵,尤其是當(dāng)表中的數(shù)據(jù)量越來(lái)越大時(shí),索引對(duì)性能的影響就愈發(fā)重要。

索引優(yōu)化應(yīng)該是對(duì)查詢性能優(yōu)化最有效的手段,創(chuàng)建一個(gè)真正最優(yōu)的索引經(jīng)常需要重寫SQL查詢語(yǔ)句。

索引的工作原理

要理解MySQL中索引的工作原理,最簡(jiǎn)單的方法就是去看一看一本書(shū)的索引部分:比如你想在一本書(shū)中尋找某個(gè)主題,一般會(huì)先看書(shū)的索引目錄,找到對(duì)應(yīng)的章節(jié)、對(duì)應(yīng)的頁(yè)碼后就可以快速找到你想看的內(nèi)容。

在MySQL中,存儲(chǔ)引擎用類似的方法使用索引,其先在索引中查找對(duì)應(yīng)的值,然后根據(jù)匹配的索引記錄找到對(duì)應(yīng)的數(shù)據(jù)行,最后將數(shù)據(jù)結(jié)果集返回給客戶端。

索引的類型

在MySQL中,通常我們所指的索引類型,有以下幾種:

常規(guī)索引,也叫普通索引(index或key),它可以常規(guī)地提高查詢效率。一張數(shù)據(jù)表中可以有多個(gè)常規(guī)索引。常規(guī)索引是使用最普遍的索引類型,如果沒(méi)有明確指明索引的類型,我們所說(shuō)的索引都是指常規(guī)索引。

主鍵索引(Primary Key),也簡(jiǎn)稱主鍵。它可以提高查詢效率,并提供唯一性約束。一張表中只能有一個(gè)主鍵。被標(biāo)志為自動(dòng)增長(zhǎng)的字段一定是主鍵,但主鍵不一定是自動(dòng)增長(zhǎng)。一般把主鍵定義在無(wú)意義的字段上(如:編號(hào)),主鍵的數(shù)據(jù)類型最好是數(shù)值。

唯一索引(Unique Key),可以提高查詢效率,并提供唯一性約束。一張表中可以有多個(gè)唯一索引。

全文索引(Full Text),可以提高全文搜索的查詢效率,一般使用Sphinx替代。但Sphinx不支持中文檢索,Coreseek是支持中文的全文檢索引擎,也稱作具有中文分詞功能的Sphinx。實(shí)際項(xiàng)目中,我們用到的是Coreseek。

外鍵索引(Foreign Key),簡(jiǎn)稱外鍵,它可以提高查詢效率,外鍵會(huì)自動(dòng)和對(duì)應(yīng)的其他表的主鍵關(guān)聯(lián)。外鍵的主要作用是保證記錄的一致性和完整性。

注意:只有InnoDB存儲(chǔ)引擎的表才支持外鍵。外鍵字段如果沒(méi)有指定索引名稱,會(huì)自動(dòng)生成。如果要?jiǎng)h除父表(如分類表)中的記錄,必須先刪除子表(帶外鍵的表,如文章表)中的相應(yīng)記錄,否則會(huì)出錯(cuò)。 創(chuàng)建表的時(shí)候,可以給字段設(shè)置外鍵,如 foreign key(cate_id) references cms_cate(id),由于外鍵的效率并不是很好,因此并不推薦使用外鍵,但我們要使用外鍵的思想來(lái)保證數(shù)據(jù)的一致性和完整性。

數(shù)據(jù)庫(kù)索引的位置

默認(rèn)是這里 (數(shù)據(jù)庫(kù)安裝目錄\data\某個(gè)數(shù)據(jù)庫(kù) )中的數(shù)據(jù)庫(kù)文件不像sqlserver,數(shù)據(jù)庫(kù)文件都有后綴

例如:

數(shù)據(jù)文件:. myd

索引文件:. MYI

表定義文件:. frm

以上是“mysql索引的工作原理”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI