Diashow
Klicken Sie auf das Bild, um Bedienelemente einzublenden! Dies verschwindet nach 10 Sekunden und wird noch mal angezeigt. !
Nur das Bild zeigen.
X

Bedienungshinweise

Navigationshilfen
... werden sichtbar, wenn Sie mit der Maus in die oberen 300 oder unteren 50 Pixel gehen.
Oben:
Oben finden Sie Vorschaubilder zur Navigation. Oben links und rechts in den Ecken können Sie die Vorschaubilder seitenweise überspringen.
Unten, von links nach rechts.
Start/Stop der Diashow, An den Anfang / Bild zurück / Bild vor / An das Ende.
Optionen zur Vergrößerung und Verkleinerung der Bilder (Skalierung).
Die Einstellung der Pausendauer.
i blendet den Bildtitel ein.
b Bildseite einblenden.
ESC Beenden der Diashow.
Skalierung:
Ja: Das Bild wird so angepaßt, daß es noch auf den Bildschirm paßt - bei Bedarf wird es vergrößert oder verkleinert.
Kleiner: Das Bild wird so angepaßt, daß es noch auf den Bildschirm paßt. Dabei wird es nur verkleinert, nie vergrößert.
2x: Das Bild maximal auf die zweifache Fläche vergrößert, nie aber verkleinert.
Nie: Das Bild wird exakt in den Maßen dargestellt, für die es gedacht ist. Übergroße Bilder werden angeschnitten.
Tastatur:
Leertaste: Start/Stop. Links / Rechts: Zurück und Vor. Pos1 bzw. Home / Rechts: Erstes / Letztes.
Tab: Geht die Skalierungsoptionen durch. Punkt: Blendet den Bildtitel aus. Minus: Verläßt die Diashow.
X
i ? Bildseite Ende Start/Stop <<< < > >>> Skalieren: Ja Kleiner Nur 2x Nie. Pause (5Sek.)
Frame Schließen

Ein kleine Lektion über Datenbank-Performance

Kategorie Webentwicklung
Inhalt
Was mag wohl schneller sein? Version 1:
     SELECT element_id
       FROM matches 
       JOIN objects ON object_id=element_id
      WHERE parent_id IN($pids) AND inactive=0
      ORDER BY create_date DESC
oder Version 2:
           SELECT object_id
             FROM objects
            WHERE object_id IN
               (
                   SELECT element_id
                     FROM matches
                     WHERE parent_id IN ($pids)
               )
              AND inactive=0
            ORDER BY create_date DESC

Die Fragestellung sagt schon, beide waren nicht gleich schnell, obwohl sie dasselbe tun.
Version 1 braucht 400 Millisekunden, Version 2 braucht 100 Millisekunden.

Das Problem in ersterem Fall war ein Table Scan auf der objects-Tabelle, um festzustellen, wo inactive=0 ist. Wieso der PostgresQL-Optimizer auf die Idee kam anzunehmen, daß er die Tabelle komplett durchsuchen müsse, kann ich mir nicht so recht erklären, immerhin beschränkt der andere Teil der WHERE-Bedingung die Zahl der Ergebnisse auf 20000 von 800000.
Ach, und natürlich liegt auf inactive ein Index, aber der ist ziemlich oft eher nutzlos (gerade mal 10000 Einträge haben da einen Wert <> 0).

Nun optimiere ich also für den Optimizer... das wird sich bestimmt irgendwann rächen.
Diashow
Home Impressum
Alle Inhalte unterliegen, soweit nicht ausdrücklich anders angegeben, dem Copyright.