久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      mysql中什么是非聚簇索引?

      mysql中非聚簇索引是索引的存儲和數(shù)據(jù)的存儲是分離的,也就是說找到了索引但沒找到數(shù)據(jù),需要根據(jù)索引上的值(主鍵)再次回表查詢,非聚簇索引也叫做輔助索引。

      mysql中什么是非聚簇索引?

      mysql中非聚簇索引是:

      索引的存儲和數(shù)據(jù)的存儲是分離的,也就是說找到了索引但沒找到數(shù)據(jù),需要根據(jù)索引上的值(主鍵)再次回表查詢,非聚簇索引也叫做輔助索引。

      一個例子

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

      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;

      相關(guān)學(xué)習(xí)推薦:mysql視頻教程

      第一種,直接根據(jù)主鍵查詢獲取所有字段數(shù)據(jù),此時主鍵是聚簇索引,因為主鍵對應(yīng)的索引葉子節(jié)點存儲了id=1的所有字段的值。

      select * from student where id = 1

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

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

      第三種,我們根據(jù)編號查詢編號(有人會問知道編號了還要查詢?要,你可能需要驗證該編號在數(shù)據(jù)庫中是否存在),這種查詢命中編號索引時,直接返回編號,因為所需要的數(shù)據(jù)就是該索引,不需要回表查詢,這種場景下no是聚簇索引

      select no from student where no = 'test'

      總結(jié):

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

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號