簡體   English   中英

在MySQL中,如何判斷表的索引是否聚集?

[英]In MySQL, how can we tell if an index of a table is clustered or not?

在MySQL中,如何判斷表的索引是否聚集?

我們可以使用show index from table-name來獲取有關表索引的信息。 但是我沒有發現它顯示每個索引是集群的還是非集群的。

這是出於以下目的: 如果MySQL中的表具有索引,該表是否必須具有聚集索引?

在默認存儲引擎InnoDB中,PRIMARY KEY索引始終是聚簇索引。

如果您沒有PRIMARY KEY,則它是非null列上的第一個UNIQUE KEY索引。

如果您在非空列上沒有PRIMARY KEY或UNIQUE KEY,則InnoDB具有隱藏的聚集索引。 在這種情況下,您無法使用此聚集索引進行查詢。

參見https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html

如果表沒有PRIMARY KEY或合適的UNIQUE索引,則InnoDB在包含行ID值的合成列上內部生成一個名為GEN_CLUST_INDEX的隱藏的聚集索引。 這些行由InnoDB分配給此類表中的行的ID排序。 行ID是一個6字節的字段,隨着插入新行而單調增加。 因此,按行ID排序的行實際上在插入順序上。

MyISAM是另一個常見的存儲引擎。 MyISAM不支持聚集索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM