2017-09-06 1 views
0

Ich bin dabei, eine SQL-Server-Datenbank nach Mariadb zu verschieben.In MySQL/Mariadb ist Index gespeichert Datenbankebene oder in der Tabellenebene?

Darin mache ich jetzt die Indexbenennung und muss einige Namen ändern, weil sie länger als 64 Zeichen sind.

Das hat mich wundern, tun in Mariadb die Indizes auf der Tabellenebene oder auf der Datenbankebene wie auf SQL Server gespeichert werden?

Um die Frage anders zu formulieren, muss der Indexname pro Datenbank oder pro Tabelle eindeutig sein?

Die Speicher-Engine Ich verwende ist innoDB

+0

Möglicherweise ein Duplikat von https://dba.stackexchange.com/questions/62900/where-is-the-index-physically-located-in-mysql-database –

+0

Ich bin nicht in den physischen Speicher @P interessiert .Salmon aber mehr darüber, wo ich von ihnen gespeichert werden sollte. auf der Ebene, auf der Tabellen gespeichert sind, oder auf der Ebene von Spalten. – Tschallacka

Antwort

1

Indexnamen (in MySQL) fast nutzlos sind. Über die einzige Verwendung ist für DROP INDEX, was selten getan wird. Daher empfehle ich, wenig Zeit mit der Benennung von Indizes zu verbringen. Die Namen müssen nur innerhalb der Tabelle eindeutig sein.

Die PRIMARY KEY (die keinen anderen Namen hat) ist mit den Daten "geclustert". Das heißt, die PK und die Daten befinden sich im selben BTree.

Jeder Sekundärschlüssel ist ein separater BTree. Der BTree wird nach den angegebenen Spalten sortiert. Die "Datensätze" des Blattknotens enthalten die Spalten des PK, wodurch eine Möglichkeit bereitgestellt wird, zum eigentlichen Datensatz zu gelangen.

FULLTEXT und SPATIAL Indizes arbeiten anders.

PARTITIONing ... Zunächst ist die Partitionierung selten nützlich. Aber wenn Sie partitionierte Tabellen haben, dann sind hier einige Details über Indizes. Eine partitionierte Tabelle ist im Wesentlichen eine Sammlung von Untertabellen, die alle identisch sind (einschließlich Indexnamen). Es gibt keinen "globalen Index" über die Tabelle hinweg; jeder Index für eine Untertabelle bezieht sich auf die Untertabelle nur.

Schlüssel gehören zu einer Tabelle, keine Datenbank.

+0

Danke. Ich muss mich mit Tabellennamen beschäftigen, da ich octobercms und Tabellennamen + automatisch generierte Indexnamen häufig> 64 Zeichen verwende. Aber vor der Namensgebung wollte ich sicherstellen, dass ich nicht auf die gleichen Probleme wie auf SQL Server stieß, wo Indexnamen eindeutig datenbankweit sein müssen. – Tschallacka

Verwandte Themen