PythonQ 240-8XX Manual de usuario Pagina 357

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 768
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 356
336 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
Tabellen sollten ¨ublicherweise mit Indexen gemacht werden. Sie onnen den EXPLAIN-
Befehl benutzen, um herauszufinden, welche Indexe f¨ur ein SELECT benutzt werden. Siehe
Abschnitt 6.2.1 [EXPLAIN], Seite 329.
Einige allgemeine Tipps:
Um MySQL zu helfen, Anfragen besser zu optimieren, lassen Sie myisamchk --analyze
auf eine Tabelle laufen, nachdem sie mit relevanten Daten gef¨ullt wurde. Das aktu-
alisiert einen Wert ur jeden Index-Teil, der die durchschnittliche Anzahl von Zeilen
angibt, die denselben Wert haben. (Bei eindeutigen Indexen ist das nat¨urlich im-
mer 1). MySQL benutzt diesen Wert, um zu entscheiden, welcher Index benutzt wer-
den soll, wenn Sie zwei Tabellen mit einem ’nicht konstanten Ausdruck’ verbinden.
Sie onnen das Ergebnis nach dem Laufenlassen von analyze mit SHOW INDEX FROM
tabelle ¨uberpr¨ufen und die Cardinality-Spalte untersuchen.
Um einen Index und Daten gem¨ einem Index zu sortieren, benutzen Sie myisamchk
--sort-index --sort-records=1 (wenn Sie nach Index 1 sortieren wollen). Wenn Sie
einen eindeutigen Index haben, von dem Sie alle Datens¨atze gem¨ der Reihenfolge
dieses Indexes lesen wollen, ist das eine gute Art, das schneller zu machen. Beachten
Sie jedoch, dieses Sortieren nicht optimal geschrieben wird und bei einer großen Tabelle
lange dauert!
6.2.4 Wie MySQL WHERE-Klauseln optimiert
Die WHERE-Optimierungen wurden hier in den SELECT-Teil aufgenommen, weil sie meist in
Verbindung mit SELECT benutzt werden, aber dieselben Optimierungen treffen f¨ur WHERE
bei DELETE- und UPDATE-Statements zu.
Beachten Sie auch, dass dieser Abschnitt nicht vollst¨andig ist. MySQL f¨uhrt viele Opti-
mierungen durch und wir hatten noch keine Zeit, alle davon zu dokumentieren.
Einige der Optimierungen, die MySQL durchf¨uhrt, sind unten aufgef¨uhrt:
Entfernung unn¨otiger Klammern:
((a AND b) AND c OR (((a AND b) AND (c AND d))))
-> (a AND b AND c) OR (a AND b AND c AND d)
Konstanten-’Falten’ (Folding):
(a<b AND b=c) AND a=5
-> b>5 AND b=c AND a=5
Bedingungsentfernung bei Konstanten (notwendig wegen Konstanten-’Falten’):
(B>=5 AND B=5) OR (B=6 AND 5=5) OR (B=7 AND 5=6)
-> B=5 OR B=6
Konstante Ausdr¨ucke, die von Indexen benutzt werden, werden nur einmal ausgewertet.
COUNT(*) auf eine einzelne Tabelle ohne ein WHERE wird direkt aus der Tabelleninfor-
mation a/jointfilesconvert/293675/bgerufen. Das wird auch bei jeglichen NOT NULL-Ausdr¨ucken gemacht, wenn
diese nur f¨ur eine Tabelle benutzt werden.
Fr¨uherkennung ung¨ultiger Konstanten-Ausdr¨ucke. MySQL stellt schnell fest, dass
einige SELECT-Statements unm¨oglich sind, und gibt keine Zeilen zur¨uck.
HAVING wird mit WHERE vereinigt, wenn Sie GROUP BY oder Gruppen-Funktionen
(COUNT(), MIN() usw.) nicht benutzen.
Vista de pagina 356
1 2 ... 352 353 354 355 356 357 358 359 360 361 362 ... 767 768

Comentarios a estos manuales

Sin comentarios