mysql索引(六)主鍵索引

Mysql索引大概有五種類型:

普通索引(INDEX):最基本的索引,沒(méi)有任何限制
唯一索引(UNIQUE):與"普通索引"類似,不同的就是:索引列的值必須唯一,但允許有空值。
主鍵索引(PRIMARY):它 是一種特殊的唯一索引,不允許有空值。
全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,檢索文本信息的, 針對(duì)較大的數(shù)據(jù),生成全文索引很耗時(shí)和空間。
聯(lián)合(組合)索引:為了更多的提高mysql效率可建立組合索引,遵循”最左前綴“原則。

這里我們來(lái)看下主鍵索引(特殊的唯一索引)。

主鍵索引一般建議使用數(shù)據(jù)表的自增唯一主鍵來(lái)作為主鍵索引使用。

主鍵索引,簡(jiǎn)稱主鍵,原文是PRIMARY KEY,由一個(gè)或多個(gè)列組成,用于唯一性標(biāo)識(shí)數(shù)據(jù)表中的某一條記錄。一個(gè)表可以沒(méi)有主鍵,但最多只能有一個(gè)主鍵,并且主鍵值不能包含NULL。

在MySQL中,InnoDB數(shù)據(jù)表的主鍵設(shè)計(jì)我們通常遵循幾個(gè)原則:

1、采用一個(gè)沒(méi)有業(yè)務(wù)用途的自增屬性列作為主鍵;
2、主鍵字段值總是不更新,只有新增或者刪除兩種操作;
3、不選擇會(huì)動(dòng)態(tài)更新的類型,比如當(dāng)前時(shí)間戳等。

在MyISAM引擎中,唯一索引除了key值允許存在NULL外,其余的和主鍵索引沒(méi)有本質(zhì)性區(qū)別。也就是說(shuō),在MyISAM引擎中,不允許存在NULL值的唯一索引,本質(zhì)上和主鍵索引是一回事。

而在InnoDB引擎中,主鍵索引和輔助索引的區(qū)別就很大了。主鍵索引會(huì)被選中作為聚集索引,而唯一索引和普通輔助索引間除了唯一性約束外,在存儲(chǔ)上沒(méi)本質(zhì)區(qū)別。

從查詢性能上來(lái)說(shuō),在MyISAM表中主鍵索引和不允許有NULL的唯一索引的查詢性能是相當(dāng)?shù)模贗nnoDB表通過(guò)唯一索引查詢則需要多一次從輔助索引到主鍵索引的轉(zhuǎn)換過(guò)程。InnoDB表基于普通索引的查找代價(jià)更高,因?yàn)槊看螜z索到結(jié)果后,還需要至少再多檢索一次才能確認(rèn)是否還有更多符合條件的結(jié)果,主鍵索引和唯一索引就不需要這么做了。

關(guān)于主鍵索引,我能想到的基本上就是這些了。這個(gè)沒(méi)有sql的驗(yàn)證。

單純的就是我自己在這叨叨的一些我理解的一些知識(shí)點(diǎn)。

有好的建議,請(qǐng)?jiān)谙路捷斎肽愕脑u(píng)論。

歡迎訪問(wèn)個(gè)人博客
https://guanchao.site

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容