PythonQ 240-8XX Bedienungsanleitung Seite 664

  • Herunterladen
  • Zu meinen Handbüchern hinzufügen
  • Drucken
  • Seite
    / 768
  • Inhaltsverzeichnis
  • LESEZEICHEN
  • Bewertet. / 5. Basierend auf Kundenbewertungen
Seitenansicht 663
Anhang A: Probleme und aufige Fehler 643
Das WHERE-Statement wird ausgef¨uhrt, um festzulegen, welche Zeilen im GROUP BY-Teil en-
thalten sein sollen, ahrend HAVING benutzt wird, um zu entscheiden, welche Zeilen der
Ergebnismenge benutzt werden sollten.
A.5.5 Zeilen aus verwandten Tabellen oschen
Weil MySQL keine Sub-Selects oder die Benutzung von mehr als einer Tabelle im DELETE-
Statement unterst¨utzt, m¨ussen Sie folgenden Ansatz ahlen, um Zeilen aus zwei verwandten
Tabellen zu oschen:
1. ahlen (SELECT) Sie die Zeilen auf der Grundlage einer WHERE-Bedingung in der Haupt-
Tabelle aus.
2. oschen (DELETE) Sie die Zeilen in der Haupt-Tabelle auf der Grundlage derselben
Bedingung.
3. oschen Sie die Zeilen aus der verwandten Tabelle, bei denen die verwandte Spalte
in den ausgew¨ahlten Zeilen vorkommt (DELETE FROM verwandte_tabelle WHERE
verwandte_spalte IN (ausgewaehlte_zeilen).
Wenn die Gesamtzahl von Zeichen in der Anfrage mit verwandte_spalte mehr als 1.048.576
betr¨agt (der Vorgabewert von max_allowed_packet, sollten Sie sie in kleinere Teile auf-
spalten und mehrfache DELETE-Statements ausf¨uhren. Wahrscheinlich geht das oschen
(DELETE) am Schnellsten, wenn Sie nur 100 bis 1000 verwandte_spalte-Kennungen pro
Anfrage oschen, wenn verwandte_spalte ein Index ist. Wenn verwandte_spalte kein
Index ist, ist die Geschwindigkeit unabh¨angig von der Anzahl von Argumenten in der IN-
Klausel.
A.5.6 Probleme bei keinen ¨ubereinstimmenden Zeilen osen
Wenn Sie eine komplizierte Anfrage hab en, die viele Tabellen hat und keine Zeilen
zur¨uckgibt, sollten Sie folgende Prozedur benutzen, um herauszufinden, was bei Ihrer
Anfrage falsch ist:
1. Testen Sie die Anfrage mit EXPLAIN und pr¨ufen Sie, ob Sie etwas finden onnen, das
offensichtlich falsch ist. Siehe Abschnitt 6.2.1 [EXPLAIN], Seite 329.
2. ahlen Sie in der WHERE-Klausel nur die Felder aus, die benutzt werden.
3. Entfernen Sie nacheinander Tabelle f¨ur Tabelle aus der Anfrage, bis sie Zeilen
zur¨uckgibt. Wenn die Tabellen Groß sind, ist es eine gute Idee, LIMIT 10 bei der
Anfrage zu benutzen.
4. Machen Sie ein SELECT f¨ur die Spalte, die mit einer Zeile atte ¨ubereinstimmen sollen,
gegen die Tabelle, die als letzte aus der Anfrage entfernt wurde.
5. Wenn Sie FLOAT- oder DOUBLE-Spalten mit Zahlen vergleichen, die Dezimal-
stellen haben, onnen Sie nicht = benutzen! Das Problem tritt in den meisten
Computersprachen auf, weil Fließkommawerte keine exakten Werte sind:
mysql> SELECT * FROM tabelle WHERE float_spalte=3.5;
mysql> SELECT * FROM tabelle WHERE float_spalte between 3.45 und 3.55;
In den meisten allen kann dies durch Umwandlung von FLOAT in DOUBLE behoben
werden!
Seitenansicht 663
1 2 ... 659 660 661 662 663 664 665 666 667 668 669 ... 767 768

Kommentare zu diesen Handbüchern

Keine Kommentare