Vinzenz Mai: MySQL: Anfrage auf Existenz eines Tupels mit einer Bedingung

Beitrag lesen

Hallo

stelle sicher, dass ein Index benutzt wird, siehe http://dev.mysql.com/doc/refman/5.0/en/limit-optimization.html.
BenutzerNr wäre hier der Index. Doch soweit ich die Doku verstehe muss die Spalte, die ich suche ein Index sein. Das ist allerdings nicht der Fall.

dann ändere dies. Wenn diese Aufgabe oft zu erledigen ist, dann ist ein Index für diese Spalte ganz sicher angebracht und erhöht immens die Effizienz der Anwendung.

Je nach Zweck kann es überflüssig sein, eine Existenzanfrage zu stellen.
Das ist natürlich effizienter :-)

Hm, inwiefern kann ich denn so einen "Zweck" erkennen? Also ich könnte mir vorstellen direkt beim Schreiben in die Tabelle so eine Prüfung einzubauen. Aber das funktioniert in meinem Fall nicht.

Wenn zum Beispiel die Werte in der Spalte Name eindeutig sein müssen, dann prüft man weder bei INSERT noch bei UPDATE vorher, ob es den Wert, der eingetragen werden soll, schon gibt, sondern man versieht diese Spalte mit einem UNIQUE-Index. Beim Versuch einen Wert zu speichern, den es schon gibt, wird eine entsprechende Fehlermeldung zurückgeliefert, mir der man rechnet, die man entsprechend behandelt. Wurde das Statement hingegen erfolgreich ausgeführt, so war der Wert zulässig. Eine Prüfung vorher ist somit überflüssig, sie erfordert in einer Mehrbenutzerumgebung sowieso die Kapselung in eine Transaktion.

Freundliche Grüße

Vinzenz