PythonQ 240-8XX Manual de usuario Pagina 360

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 768
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 359
Kapitel 6: MySQL-Optimierung 339
Die Lese-Reihenfolge der Tabellen, die von LEFT JOIN und STRAIGHT JOIN erzwungen wird,
hilft dem Optimierer (der berechnet, in welcher Reihenfolge die Tabellen verkn¨upft wer-
den sollen), seine Arb eit schneller durchzuf¨uhren, weil weniger Tabellenvertauschungen
¨uberpr ¨uft werden m¨ussen.
Beachten Sie, dass das oben Gesagte bedeutet, dass bei einer Anfrage des folgenden Typs:
SELECT * FROM a,b LEFT JOIN c ON (c.key=a.key) LEFT JOIN d (d.key=a.key) WHERE b.key=d.key
MySQL einen kompletten Scan von b durchf¨uhren wird, weil der LEFT JOIN erzwingt, dass
diese vor d gelesen wird.
Das aßt sich in diesem Fall beheben, indem die Anfrage wie folgt ge¨andert wird:
SELECT * FROM b,a LEFT JOIN c ON (c.key=a.key) LEFT JOIN d (d.key=a.key) WHERE b.key=d.key
6.2.7 Wie MySQL LIMIT optimiert
In einigen allen handhabt MySQL die Anfrage unterschiedlich, wenn Sie LIMIT # statt
HAVING benutzen:
Wenn Sie nur einige wenige Zeilen mit LIMIT ausw¨ahlen, benutzt MySQL in eini-
gen allen Indexe, wenn er ansonsten vorzugsweise einen vollst¨andigen Tabellenscan
durchf¨uhren w¨urde.
Wenn Sie LIMIT # mit ORDER BY benutzen, beendet MySQL das Sortieren, sobald er
die ersten # Zeilen gefunden hat, anstatt die gesamte Tabelle zu sortieren.
Wenn Sie LIMIT # mit DISTINCT kombinieren, ort MySQL auf, sobald er # eindeutige
Zeilen gefunden hat.
In einigen allen kann GROUP BY aufgel¨ost werden, indem der Schl¨ussel in der Reihen-
folge gelesen wird (oder der Schl¨ussel sortiert wird) und danach Zusammenfassungen
berechnet werden, bis sich der Schl¨usselwert ¨andert. In diesem Fall berechnet LIMIT #
keine unn¨otigen GROUP BY’s.
Sobald MySQL die ersten # Zeilen an den Client geschickt hat, wird die Anfrage a/jointfilesconvert/293675/bge-
brochen.
LIMIT 0 gibt immer schnell eine leere Ergebnismenge (empty set) zur¨uck. Das ist
n¨utzlich, um die Anfrage zu ¨uberpr¨ufen und die Spaltentypen der Ergebnisspalten zu
erhalten.
Die Gr¨oße der tempor¨aren Tabellen benutzt LIMIT #, um zu berechnen, wieviel Platz
ben¨otigt wird, um die Anfrage aufzul¨osen.
6.2.8 Geschwindigkeit von INSERT-Anfragen
Die Zeit, einen Datensatz einzuf¨ugen, besteht ungef¨ahr aus:
Verbindung: (3)
Anfrage an den Server schicken: (2)
Anfrage parsen: (2)
Datensatz einf¨ugen: (1 x Gr¨oße des Datensatzes)
Indexe einf¨ugen: (1 x Anzahl der Indexe)
Vista de pagina 359
1 2 ... 355 356 357 358 359 360 361 362 363 364 365 ... 767 768

Comentarios a estos manuales

Sin comentarios