我对聚类和非聚类索引感到非常困惑,我今天花了将近 5 个小时来澄清我的疑问,但我仍然无法找到以下问题的答案:
1-聚集索引按索引顺序物理存储在表中。
问题:1.A.物理在这里的意义是什么?1.B.是在系统上创建了单独的文件,还是按排序顺序将数据存储在表中?
2-一个表只能创建一个集群索引。
问题:2.A.这是否意味着当我们在两列上创建索引时,它将自动成为非聚集索引?
3-MyISAM不支持集群索引,但InnoDB支持它
问题:3.一.这意味着在MyISAM上创建的所有索引默认情况下都是非聚集索引?3.B. 是 .MYI文件包含所有非聚集索引数据?4.B.同样,如果索引数据存储在MyISAM的文件中,那么InnoDB将其聚簇索引数据存储在哪里?
请帮忙,因为我在今天的采访中被问到这些问题,我真的没有得到任何明确的答案?
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