Müssen Sie explizit einen Index erstellen oder ist dieser beim Definieren des Primärschlüssels implizit? Ist die Antwort für MyISAM und InnoDB dieselbe?
243
Der Primärschlüssel ist immer indiziert. Dies gilt auch für MyISAM und InnoDB und gilt im Allgemeinen für alle Speicher-Engines, die überhaupt Indizes unterstützen.
Laut http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html scheint dies implizit zu sein
quelle
Obwohl dies 2009 gefragt wurde, stellte ich fest, dass ich einen tatsächlichen Verweis auf die MySQL-Dokumentation zu Primärschlüsseln veröffentlichen würde. http://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html
Eine Referenz zu MySQL 5.0 finden Sie unter: http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
quelle
Der Primärschlüssel ist implizit sowohl für MyISAM als auch für InnoDB indiziert. Sie können dies überprüfen, indem Sie EXPLAIN für eine Abfrage verwenden, die den Primärschlüssel verwendet.
quelle
Sie müssen keinen Index explizit für einen Primärschlüssel erstellen. Dies erfolgt standardmäßig.
quelle
Ich denke das ist die Antwort
quelle
Indizes werden am besten für Spalten verwendet, die häufig in where-Klauseln und bei jeder Art von Sortierung verwendet werden, z. B. "order by". Möglicherweise arbeiten Sie an einer komplexeren Datenbank. Beachten Sie daher einige einfache Regeln.
Indizes beschleunigen, wo Klauseln und Reihenfolge nach. Denken Sie daran, darüber nachzudenken, wie Ihre Daten beim Erstellen Ihrer Tabellen verwendet werden. Es gibt noch ein paar andere Dinge zu beachten. Wenn Ihre Tabelle sehr klein ist, dh nur wenige Mitarbeiter, ist es schlimmer, einen Index zu verwenden, als ihn wegzulassen und ihn einfach einen Tabellenscan durchführen zu lassen.
Indizes sind wirklich nur bei Tabellen nützlich, die viele Zeilen enthalten.
Eine andere Sache, die Sie beachten sollten, ist ein Nachteil in der Situation der Datenbank unserer Mitarbeiter: Wenn die Spalte eine variable Länge hat, arbeiten Indizes (wie auch die meisten von MySQL) viel weniger effizient.
Vergessen Sie nicht, sich auch anzuschließen! Indizierte Join-Felder beschleunigen die Arbeit.
quelle
Der Primärschlüssel wird immer automatisch indiziert und ist eindeutig. Achten Sie also darauf, keine redundanten Indizes zu erstellen.
Zum Beispiel, wenn Sie eine Tabelle als solche erstellt haben
Da Sie den Primärschlüssel indizieren und eine Eindeutigkeitsbeschränkung erzwingen möchten, werden am Ende tatsächlich drei Indizes erstellt
foo
!quelle
Man kann sich eine Primärschlüsselspalte wie jede andere indizierte Spalte mit den Einschränkungen des Primärschlüssels vorstellen.
In den meisten Anwendungsfällen benötigen wir sowohl Primärschlüssel als auch indizierte Spalten / Spalten in einer Tabelle, da unsere Abfragen an Tabellen Zeilen basierend auf Spalten / Spalten filtern können, die kein Primärschlüssel sind. In diesem Fall indizieren wir normalerweise diese Spalten / Spalten auch.
quelle