Dieser Artikel entstand aus der Hausaufgabe „Erlernen Sie Indexierungsfähigkeiten in einer Minute“. Angenommen, die Tabellenstruktur für die Auftragsabwicklung ist: Bestellung (oid, Datum, UID, Status, Geld, Zeit, …) In:
Angenommen, eine Bestellung hat drei Zustände: 0 wurde aufgegeben, 1 wurde bezahlt und 2 wurde abgeschlossen. Geschäftsanforderung: Abfrage nicht abgeschlossener Bestellungen, welches SQL ist schneller?
Fazit: Lösung 1 ist die langsamste, während die Lösungen 2, 3 und 4 alle den Index treffen können. Aber... 1: Union All kann definitiv den Index erreichen Wählen Sie * aus der Reihenfolge, in der Status = 0 ist Vereinigung alle Wählen Sie * aus der Reihenfolge, in der Status = 1 veranschaulichen: Sagen Sie MySQL direkt, was zu tun ist. MySQL verbraucht am wenigsten CPU Programmierer schreiben SQL nicht oft auf diese Weise (alles vereinigen). 2: Einfach in kann den Index treffen Wählen Sie * aus der Reihenfolge, in der der Status in (0,1) liegt. veranschaulichen: Lassen Sie MySQL nachdenken, die Abfrageoptimierung verbraucht mehr CPU als die Vereinigung aller, aber es ist vernachlässigbar Programmierer schreiben SQL (in) oft so. In diesem Beispiel wird empfohlen, es so zu schreiben Drei: Für oder kann die neue Version von MySQL den Index treffen Wählen Sie * aus der Reihenfolge, in der Status = 0 oder Status = 1 veranschaulichen: Lassen Sie MySQL nachdenken. Die Abfrageoptimierung verbraucht mehr CPU als IN. Belasten Sie MySQL nicht. Es wird Programmierern nicht empfohlen, „oder“ häufig zu verwenden, da nicht alle „oder“ den Index treffen. Für ältere MySQL-Versionen empfiehlt es sich, 4. Bei != treffen negative Abfragen definitiv nicht den Index Wählen Sie * aus der Reihenfolge, in der Status! = 2 veranschaulichen: Vollständiger Tabellenscan, die am wenigsten effiziente und langsamste aller Lösungen Negative Lookups sind verboten V. Weitere Optionen Wählen Sie * aus der Reihenfolge, in der der Status < 2 ist In diesem konkreten Beispiel ist es tatsächlich schnell, aber: Dieses Beispiel gibt nur drei Zustände an. Das tatsächliche Geschäft hat mehr als diese drei Zustände, und der „Wert“ des Zustands erfüllt gerade die partielle Ordnungsbeziehung. Was ist, wenn Sie andere Zustände prüfen möchten? SQL sollte sich nicht auf den Wert der Aufzählung verlassen, und die Lösung ist nicht universell. Dieses SQL ist schlecht lesbar, schlecht verständlich und schlecht wartbar. Es wird dringend davon abgeraten. 6. Hausaufgaben Kann eine solche Abfrage den Index treffen? Wählen Sie * aus der Reihenfolge, in der die UID in ( Wählen Sie die UID aus der Reihenfolge, in der der Status = 0 ist. ) select * from order where status in (0, 1) sortieren nach Datum absteigend Wählen Sie * aus der Reihenfolge, in der Status = 0 oder Datum <= CURDATE() Hinweis: Dies ist nur ein Beispiel. Seien Sie nicht zu pingelig, was die Rationalität des SQL für das jeweilige Unternehmen angeht. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Methoden und Schritte zum Bereitstellen mehrerer War-Pakete in Tomcat
>>: Beispielcode zur Implementierung der Großbildanpassung auf dem PC mit vue+px2rem (REM-Anpassung)
Vor einiger Zeit stieß ich während der Entwicklun...
Verwandte Artikel: 9 praktische Tipps zum Erstelle...
Ich werde drei Tage benötigen, um den statischen ...
Wie unten dargestellt: aus Tabelle wobei Bedingun...
Unter den Anforderungen des heutigen responsiven ...
Ergebnisse erzielen Umsetzungsideen Der Schmelzef...
Inhaltsverzeichnis Vue-Monitoreigenschaften Was i...
Laufumgebung, Idea2020-Version, Tomcat10, beim Au...
Nginx ist mittlerweile einer der beliebtesten Loa...
MySQL erstellt bei der Installation automatisch e...
es installation Docker-Pull Elasticsearch:7.4.0 #...
Anwendungsszenario: Es ist notwendig, die Anzahl ...
Vorwort Ehrlich gesagt fühle ich mich in letzter ...
Ubuntu ist ein kostenloses und quelloffenes Deskt...
Inhaltsverzeichnis 1. Erster Blick auf COUNT 2. D...