2

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

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

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

2- 一张表只能创建一个簇索引。

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

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

问题: 3.A. 这是否意味着在 MyISAM 上创建的所有索引默认都是非聚集索引?3.B。.MYI 文件中是否包含所有非聚集索引数据?4.B。同样,如果索引数据存储在 MyISAM 中的文件中,那么 InnoDB 将它们的聚集索引数据存储在哪里?

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

4

1 回答 1

1

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

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

2 A) 不。首先,聚集索引可以包含多个列(但必须是唯一的,不像非聚集的那样),因此它不会自动变为非聚集,而是隐含地。(不包括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

于 2013-11-12T14:13:48.217 回答