稀疏索引和非聚集索引是兩個(gè)不同但相關(guān)的概念饮怯。
稀疏索引(Sparse Index):
定義:索引中蝌衔,索引鍵值(對(duì)應(yīng)于表中的列值)的唯一值數(shù)量相對(duì)于表的總行數(shù)來(lái)說(shuō)比較少榛泛,這樣的索引稱為稀疏索引。
特點(diǎn):索引項(xiàng)數(shù)目占全表數(shù)據(jù)量的比例較低噩斟,通常低于10%曹锨。
場(chǎng)景:對(duì)取值范圍較廣的列建立索引時(shí),往往會(huì)產(chǎn)生稀疏索引剃允,如性別沛简、部門等枚舉值較少的字段。
非聚集索引(Non-Clustered Index):
定義:索引中的數(shù)據(jù)順序與表中數(shù)據(jù)的物理順序不同斥废,即葉節(jié)點(diǎn)中除了索引鍵值外椒楣,還存儲(chǔ)了該行數(shù)據(jù)的物理地址(如果是InnoDB,存儲(chǔ)的是主鍵值)牡肉。
特點(diǎn):一張表可以有多個(gè)非聚集索引撒顿。查詢數(shù)據(jù)時(shí)需要先檢索索引,再根據(jù)索引中存儲(chǔ)的地址或主鍵值去表中檢索數(shù)據(jù)荚板。
場(chǎng)景:為非主鍵的列創(chuàng)建索引,提高基于該列的查詢性能吩屹。
二者關(guān)系:
非聚集索引可以是稠密索引(Dense Index)或稀疏索引跪另,取決于索引鍵在表中的唯一值占總行數(shù)的比例。
稀疏索引通常是非聚集索引煤搜,因?yàn)樗饕I值分布稀疏免绿,無(wú)法與表中數(shù)據(jù)的物理順序保持一致。
但并非所有的非聚集索引都是稀疏索引擦盾,對(duì)于唯一值較多的列建立的非聚集索引可能是稠密的嘲驾。
綜上,稀疏索引和非聚集索引并不是完全相同的概念迹卢,但在實(shí)際應(yīng)用中辽故,稀疏索引通常以非聚集索引的形式存在。理解二者的區(qū)別和聯(lián)系腐碱,有助于更好地設(shè)計(jì)和優(yōu)化數(shù)據(jù)庫(kù)索引誊垢。