Wird eine Abfrage auf einen Ergebnisdatensatz beschränkt, die Leistung in einer großen (ish) MySQL-Tabelle verbessert, wenn die Tabelle nur ein übereinstimmendes Ergebnis enthält?Verbessert die Einschränkung einer Abfrage auf einen Datensatz die Leistung
zum Beispiel
select * from people where name = "Re0sless" limit 1
, wenn es mit diesem Namen nur einen Datensatz ist? und was wäre, wenn name
der Primärschlüssel/Set zu einzigartig wäre? und lohnt es sich, die Abfrage zu aktualisieren oder wird der Gewinn minimal sein?
Wird ein vollständiger Tabellenscan verhindert, oder wird der gesamte Tabellenscan vorzeitig beendet? Wenn der Datensatz nicht vorhanden ist, muss immer noch ein vollständiger, vollständiger Tabellenscan durchgeführt werden. –
Ja, Sie haben Recht. Es sollte gesagt haben, dass es einen vollständigen Tabellenscan verhindern kann. Ich werde den Beitrag anpassen –
Die wichtige Sache hier, wie ich es verstehe, ist, dass das Hinzufügen der Grenze Ihre Abfrage schneller machen könnte, aber es wird es nicht langsamer machen. Wenn es nichts anderes ist, dient es auch dazu, Ihre Absicht zukünftigen Entwicklern klar zu vermitteln, falls sie eine Situation debuggen müssen, in der Ihre Bedingungen nicht so einzigartig waren, wie Sie es dachten. Ich mache es mir zur Gewohnheit, immer eine Limit-Klausel hinzuzufügen, wenn ich nur ein Ergebnis habe. Es ist nur verschwendete Intelligenz, um herauszufinden, ob ein bereits bestehender Index das für Sie bereits getan hätte. – GrandOpener