Verschiedene MySQL-Tutorial

February 26

MySQL ist ein open-Source-relationalen Datenbank-Managementsystem (RDBMS). Wegen seiner niedrigen Kosten verwenden Organisationen zunehmend bei großen Datenbanken es. Je größer die Datenbank, desto wahrscheinlicher eine Abfrage viele doppelte Zeilen, Macht Ausgabe schwer zu lesen und die langsame Abfrage liefert. Mit dem DISTINCT-Schlüsselwort in Ihrer SELECT-Anweisungen kann diese Duplikate in Ihren Ausgang beseitigen.

Warum erhalten Sie doppelte Ergebnisse

In der Regel keine Abfrage angezeigt werden alle Spalten in den Tabellen, auf die verwiesen. Ein Arbeitgeber kann z. B. eine Tabelle haben, die Abwesenheiten von Mitarbeitern verfolgt. Will er herausfinden, welche Mitarbeiter mindestens eine Abwesenheit im letzten Monat hatte, könnte er eine Abfrage verwenden, die etwa wie folgt aussieht:

Wählen Sie employees.first_name, employees.last_nameVON Mitarbeitern, AbwesenheitenWO employees.employee_id = absences.employee_idUND absences.date > = 'JUN-01-09'GEHEN

Wenn Bob Smith abwesend war für drei Tage im Juni die Ergebnisse der Abfrage enthält drei Reihen von Bob Smith. Auch wenn die Abfrage nicht das Datum angezeigt, da Bobs drei Abwesenheiten zu unterschiedlichen Terminen waren, gibt diese Abfrage jede der drei Zeilen.

Warum doppelte Ergebnisse schlecht sind

Doppelte Zeilen machen Ihre Ausgabe nicht nur schwer zu lesen, sie auch Ihre Abfrage verlangsamen und Schwein Datenbank Ressourcen. Es sei denn, Ihre Datenbank sehr klein ist, entwickeln Sie wahrscheinlich Ihre SQL-Skripts in eine Entwicklung-Datenbankinstanz, die getrennt von Ihren Produktionsinstanz ist. Es ist nicht gar ungewöhnlich für Entwicklung-Instanzen, die weit weniger Daten als die Produktionsinstanz enthalten.

Wenn Sie doppelte Zeilen in Ihrer Ausgabe zulassen, machst du Ihrer Datenbank ganz durch alle Tabellen zu suchen, die Sie in Ihrer Abfrage zusammengefügt haben. Dies kann eine Abfrage machen, die schnell lief, dass langsam genug in Ihre Dev-Instanz auf ein Schneckentempo in der Produktion. Wenn die Produktionsdatenbank groß ist, kann die Abfrage Stunden laufen.

Verwenden und unterschiedliche optimieren

Die folgende SELECT-Anweisung gibt eine Zeile zurück, Bob Smith:

SELECT DISTINCT employees.first_name, employees.last_nameVON Mitarbeitern, AbwesenheitenWO employees.employee_id = absences.employee_idUND absences.date zwischen ' 2009-06-01' und ' 2009-07-01'GEHEN

Ihre Ergebnisse sind einfacher zu lesen, aber Ihrem Datenbankserver muss noch arbeiten zu hart, wenn die Employee-Tabelle viel mehr Zeilen als Ihr der Tabelle hat. MySQL geht durch jeden Datensatz in der Tabelle "Employees" zu sehen, ob dieser Mitarbeiter Fehlzeiten hat.

Erstellen Sie stattdessen selbständiges Werk für Sie um Ihre Anfrage effizienter zu gestalten:

SELECT DISTINCT employees.first_name, employees.last_nameVON Mitarbeitern, AbwesenheitenWO absences.employee_id = employees.employee_idUND absences.date > = 'JUN-01-09'GEHEN

Diese Abfrage wird einen Datensatz in der Tabelle nehmen und stoppen die Employee-Tabelle zu suchen, sobald er den Mitarbeiter gefunden, der mit diesem fehlen geht. Ihre Anfrage wird nur ausgeführt, da viele Recherchen als dort Abwesenheiten sind und durch sucht weit weniger der Employee-Tabelle für jede Suche. Es verwendet weniger Datenbankressourcen für und läuft viel schneller.