Kurz gesagt, Indizes sind am besten für Spalten, die häufig in Where-Klauseln verwendet werden, und in jeder Art von Sortierung, wie "Reihenfolge durch ", und auch mit hohen Kardinalitäts-Spalten. Auf der anderen Seite verlangsamen Indizes, wenn sie übertrieben sind, Schreibvorgänge und belegen außerdem viel Speicherplatz auf der Festplatte.MYSQL InnoDB-Engine-Indizierung (B-Tree), und One-to-One-Beziehung
Ich habe einen Benutzer-Registrierungstabelle mit den folgenden Feldern:
ID INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
User_name VARCHAR(35) NOT NULL,
BirthDay DATE NOT NULL,
password CHAR(70) NOT NULL,
Security_hint VARCHAR(27) NOT NULL,
Email VARCHAR(225) NOT NULL,
userType ENUM ('a','b','c','d') NOT NULL DEFAULT 'a',
Signup_Date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
activation TINYINT(1) UNSIGNED NOT NULL,
Ip BINARY(16) NOT NULL,
PRIMARY KEY (ID),
UNIQUE KEY User_name (User_name,Email)
- Ich bin sehr davon überzeugt, mit den Datentypen I für alle Felder ausgewählt haben.
- die Felder
Signup_Date
undSecurity_hint
werden selten gegen abgefragt werden, so entschied ich mich, sie in einer separaten Tabelle zu isolieren und verwenden 1-1 Beziehung mit Fremdschlüsseln. Ist diese Strategie effizient? Gibt es einen Leistungseinbruch, der aus dieser Strategie resultieren könnte? - WICHTIG: Muss ich auch das PASSWORD-Feld indizieren, um den Anmeldevorgang sehr schnell zu machen?
Vielen Dank Jungs im Voraus.
EDIT: meine Login-Abfrage ist SELECT columns FROM users WHERE username = "x" AND password = "stuff"
. Ich verwende Index für E-Mail nur die Überprüfung einer bestehenden E-Mail schnell zu machen, wie E-Mails und Benutzernamen für jeden Benutzer eindeutig sein muss
Sie sollten nur eine Frage stellen, da dies die Antwort erleichtert. Wenn du zwei Fragen gleichzeitig beantwortest, könntest du die erste Antwort perfekt beantworten, und jemand anders hat die beste Antwort auf die zweite Frage -> welche davon sollte akzeptiert werden? – Philipp
@Philipp. Wenn die zwei Fragen beantwortet werden, wäre das großartig, wenn nur ein beantwortet werden muss, würde ich gerne das WICHTIGE sein. Danke – Tim