真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql中的非聚簇索引是什么

今天就跟大家聊聊有關(guān)MySQL中的非聚簇索引,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)公司主要從事網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)東山,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792

mysql中非聚簇索引是:

非聚簇索引,索引的一種。索引分為聚簇索引和非聚簇索引兩種。建立索引的目的是加快對(duì)表中記錄的查找或排序。索引順序與數(shù)據(jù)物理排列順序無(wú)關(guān)。

每個(gè)表只能有一個(gè)聚簇索引,因?yàn)橐粋€(gè)表中的記錄只能以一種物理順序存放。但是,一個(gè)表可以有不止一個(gè)非聚簇索引。實(shí)際上,對(duì)每個(gè)表你最多可以建立249個(gè)非聚簇索引。非聚簇索引需要大量的硬盤空間和內(nèi)存。另外,雖然非聚簇索引可以提高從表中取數(shù)據(jù)的速度,它也會(huì)降低向表中插入和更新數(shù)據(jù)的速度。每當(dāng)你改變了一個(gè)建立了非聚簇索引的表中的數(shù)據(jù)時(shí),必須同時(shí)更新索引。因此你對(duì)一個(gè)表建立非聚簇索引時(shí)要慎重考慮。如果你預(yù)計(jì)一個(gè)表需要頻繁地更新數(shù)據(jù),那么不要對(duì)它建立太多非聚簇索引。另外,如果硬盤和內(nèi)存空間有限,也應(yīng)該限制使用非聚簇索引的數(shù)量。

一個(gè)例子

下面我們創(chuàng)建了一個(gè)學(xué)生表,做三種查詢,來(lái)說(shuō)明什么情況下是聚簇索引,什么情況下不是。

create table student (
    id bigint,
    no varchar(20) ,
    name varchar(20) ,
    address varchar(20) ,
    PRIMARY KEY (`branch_id`) USING BTREE,
    UNIQUE KEY `idx_no` (`no`) USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

第一種,直接根據(jù)主鍵查詢獲取所有字段數(shù)據(jù),此時(shí)主鍵是聚簇索引,因?yàn)橹麈I對(duì)應(yīng)的索引葉子節(jié)點(diǎn)存儲(chǔ)了id=1的所有字段的值。

select * from student where id = 1

第二種,根據(jù)編號(hào)查詢編號(hào)和名稱,編號(hào)本身是一個(gè)唯一索引,但查詢的列包含了學(xué)生編號(hào)和學(xué)生名稱,當(dāng)命中編號(hào)索引時(shí),該索引的節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)的是主鍵ID,需要根據(jù)主鍵ID重新查詢一次,所以這種查詢下no不是聚簇索引

select no,name from student where no = 'test'

第三種,我們根據(jù)編號(hào)查詢編號(hào)(有人會(huì)問(wèn)知道編號(hào)了還要查詢?要,你可能需要驗(yàn)證該編號(hào)在數(shù)據(jù)庫(kù)中是否存在),這種查詢命中編號(hào)索引時(shí),直接返回編號(hào),因?yàn)樗枰臄?shù)據(jù)就是該索引,不需要回表查詢,這種場(chǎng)景下no是聚簇索引

select no from student where no = 'test'

總結(jié):

主鍵一定是聚簇索引,MySQL的InnoDB中一定有主鍵,即便研發(fā)人員不手動(dòng)設(shè)置,則會(huì)使用unique索引,沒(méi)有unique索引,則會(huì)使用數(shù)據(jù)庫(kù)內(nèi)部的一個(gè)行的id來(lái)當(dāng)作主鍵索引,其它普通索引需要區(qū)分SQL場(chǎng)景,當(dāng)SQL查詢的列就是索引本身時(shí),我們稱這種場(chǎng)景下該普通索引也可以叫做聚簇索引,MyisAM引擎沒(méi)有聚簇索引。

看完上述內(nèi)容,你們對(duì)mysql中的非聚簇索引有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


文章名稱:mysql中的非聚簇索引是什么
文章起源:http://weahome.cn/article/jcdjsc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部