2017-09-06 72 views
0

我正在將sql server數據庫移動到mariadb。在mysql/mariadb是索引存儲數據庫級還是在表級別?

因爲我現在正在做索引命名,並且必須修改一些名稱,因爲它們長於64個字符。

這讓我想知道,做在mariadb索引得到存儲在表級別或在數據庫級別上像sql服務器上?

要以另一種方式更改問題,索引名稱是否必須對每個數據庫或每個表都是唯一的?

我正在使用的存儲引擎是innoDB

+0

可能是https://dba.stackexchange.com/questions/62900/where-is-the-index-physically-located-in-mysql-database –

+0

的副本我對物理存儲@P不感興趣薩爾蒙,但更多關於我應該考慮他們存儲的位置。在存儲表的級別上,或者在列的級別上。 – Tschallacka

回答

1

索引名稱(在MySQL中)幾乎沒用。關於唯一的用途是DROP INDEX,這很少完成。所以,我建議在命名索引上花費很少的時間。名稱只需在內唯一。

PRIMARY KEY(沒有其他名稱)與數據「聚集」。也就是說,PK和數據在同一個BTree中。

每個輔助密鑰都是一個單獨的BTree。 BTree根據指定的列進行排序。葉節點'記錄'包含PK的列,從而提供了一種獲取實際記錄的方法。

FULLTEXTSPATIAL索引的工作方式不同。

PARTITIONing ...首先,分區很少用。但是如果你有任何分區表,那麼這裏有一些關於索引的細節。分區表本質上是一組子表,每個子表相同(包括索引名稱)。桌子上沒有「全球指數」;子表的每個索引僅將指向子表的

Keys屬於,而不是數據庫

+0

謝謝。我需要關注表名,因爲即時通訊使用octobercms和表名+自動生成的索引名最終經常> 64個字符。但在命名之前希望確保我沒有遇到與sql server相同的問題,其中索引名稱需要是唯一的數據庫範圍。 – Tschallacka

相關問題