非聚集索引是否创建了一个单独的文件来存储其数据?

时间:2013-11-12 13:31:47

标签: mysql indexing clustered-index non-clustered-index storage-engines

我对群集和非群集索引感到困惑,今天我花了近5个小时来澄清我的疑问,但我仍然无法找到以下问题的答案:

1-聚簇索引物理以索引顺序存储在表中。

问题: 1.A.这里物理的含义是什么? 1.B.是在系统上创建的单独文件还是数据按排序顺序存储在表中?

2-只能在表上创建一个集群索引。

问题: 2.A.这是否意味着当我们在两列上创建索引时,它会自动成为非聚集索引?

3- MyISAM不支持聚簇索引,但InnoDB支持

问题: 3.A.这意味着在MyISAM上创建的所有索引都是默认的非聚簇索引? 3.B. .MYI文件是否包含所有非聚簇索引数据? 4.B.再次,如果索引数据存储在MyISAM中的文件中,那么InnoDB存储其聚簇索引数据?

请帮助我今天在我的采访中被问到这个问题,我真的没有得到任何明确的答案吗?

1 个答案:

答案 0 :(得分:0)

1 A)物理上意味着它不必从可能更大的结果集的数据计算得到你最终想要的结果,只需节省一些计算时间。

1 B)否。只有强制执行此操作时才会创建单独的文件。

2 A)否。首先,聚簇索引CAN包括多个列(但与非聚簇索引不同,因此它必须是唯一的),因此它不会自动成为非聚簇,而是隐式。 (不包括UNIQUE关键字)

3 A)MyISAM中没有聚簇索引,表示只剩下非聚簇索引。

3 B)是的。 .MYI是MyISAM的索引文件类型。

4 A)不是吗? :)

4 B)在InnoDB中,我默认只读取一个数据文件(包含所有数据库,因此还包括表及其索引),但您也可以添加新的数据文件。

这里有一些链接可以进一步阅读索引:

http://use-the-index-luke.com/welcome

https://dba.stackexchange.com/questions/1/what-are-the-main-differences-between-innodb-and-myisam

https://dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file