在 mysql/mariadb 中索引存储在数据库级别还是在 table 级别?

In mysql/mariadb is index stored database level or in table level?

我正在将 sql 服务器数据库移动到 mariadb。

因为我现在正在做索引命名,并且必须修改一些名称,因为它们超过 64 个字符。

这让我想知道,在 mariadb 中,索引是存储在 table 级别还是像 sql 服务器那样存储在数据库级别?

换句话说,索引名称是否需要每个数据库或每个 table 唯一?

我使用的存储引擎是innoDB

索引名称(在 MySQL 中)几乎没用。关于唯一的用途是 DROP INDEX,很少有人这样做。因此,我建议在命名索引上花费很少的时间。名称只需要在 table.

中是唯一的

PRIMARY KEY(除此之外没有其他名称)与数据 "clustered"。即PK和数据在同一个BTree中。

每个二级键都是一个单独的 BTree。 BTree 根据指定的列排序。叶节点 'records' 包含 PK 的列,从而提供了一种获取实际记录的方法。

FULLTEXTSPATIAL 索引的工作方式不同。

PARTITIONing... 首先,分区很少有用。但是如果你有任何分区的 tables,那么这里有一些关于索引的细节。分区 table 本质上是子 table 的集合,每个都相同(包括索引名称)。没有"global index"跨越table; sub-table 的每个索引都将 引用到 sub-table.

密钥属于 table,而不是 数据库