0

Drei Fragen: Wenn Sie ein Modell erstellen, wird ein Foreign_key automatisch auch erstellt?Schienen: Fremdschlüssel und wann zu indizieren

Ich denke, ich sollte add_index, wenn eine Spalte einzigartig für die Tabelle oder einzigartig im Allgemeinen ist, oder wenn die Spalte zu anderen Datenbanken beziehen wird, Amirite?

Wie sieht ein Index aus? Wird es nur den Inhalt der Zelle benutzen?

enter image description here

Antwort

3

1) Meinen Sie, wenn ein Generator? Im Allgemeinen sollten Sie Migrationen generieren, anstatt einen Generator für das gesamte Modell/Gerüst zu verwenden. Und dann, nein, ein Fremdschlüssel wird nicht automatisch erstellt, nur wenn Sie ihn angeben.

2) add_index wird nützlich sein für Spalten auf großen Tabellen, die schnell von Ihrer Datenbank zugegriffen werden müssen. Nehmen wir an, Sie haben eine users Tabelle mit einer email Spalte, die eindeutig sein muss, aber nicht indiziert ist. Und Ihr Service wächst, jetzt haben Sie Millionen von Nutzern und Sie müssen User.find_by_email "[email protected]" gehen. Ohne Index braucht es eine Weile. Mit einem Index wird es schnell gehen. Das ist, wenn ein Index nützlich ist.

3) Wirklich hängt von Ihrem Datenbankmodul afaik ab. Nicht etwas, das Ihren täglichen Imho beeinflussen wird (obwohl wenn Sie eine bestimmte Datenbank-Engine im Hinterkopf haben, können Sie sicherlich herausfinden). Hier ist die Info über MySQL, direkt aus der Quelle: https://dev.mysql.com/doc/refman/5.5/en/column-indexes.html

+0

So Schienen Modell generieren, schreiben Sie dann die Migration, ist eine bessere Praxis? Ich denke auch, dass ich es herausgefunden habe. Wenn ich also die Methode t.references verwende, erstelle ich den Fremdschlüssel? – PudparK

+1

nein - Sie müssen das Modell nicht generieren. Erstellen Sie die Migration, schreiben Sie das Modell. Und 'index: true' innerhalb der Migration markiert einen col als Index, obwohl Sie auch Möglichkeiten haben, den Index nachträglich hinzuzufügen. – ezuk

+0

Das macht alles klar. Danke vielmals! – PudparK

Verwandte Themen