Die Münchner Feministin Hannelore Mabry legte 1987 im SPIEGEL Wert auf die Feststellung, sie habe eine Gruppe nichtfeministischer Frauen nicht als Arschlöcher, sondern als Arschlöcherinnen bezeichnet. (Wolf Schneider)
Alle Zitate
Optimizerprobleme
Indexzugriff auf Teilfelder eines Datetime-Feldes
Die folgende SET EXPLAIN Ausgabe suggeriert, daß der Informix-Optimizer auch auf Teilfelder eines
Datetime-Feldes mittels Index zugreifen kann:
QUERY: (OPTIMIZATION TIMESTAMP: 12-28-2009 22:30:00)
------
select bfa.zeitpunkt from bfa where extend (zeitpunkt, year to month) = "2006-01"
Estimated Cost: 57839
Estimated # of Rows Returned: 154482
1) cw.bfa: INDEX PATH
(1) Index Name: cw.bfa_zeitpunkt
Index Keys: zeitpunkt (Key-Only) (Serial, fragments: ALL)
Index Key Filters: (EXTEND (cw.bfa.zeitpunkt ,year to month) = datetime(2006-01) year to month )
Die Ausgabe des Optimizers ändert sich aber, wenn man ein weiteres Feld der Tabelle bfa hinzunimmt:
QUERY: (OPTIMIZATION TIMESTAMP: 12-29-2009 15:28:43)
------
select zeitpunkt, forum_autoren_nr from bfa where extend (zeitpunkt, year to month) = "2006-01"
Estimated Cost: 930901
Estimated # of Rows Returned: 154482
1) cw.bfa: SEQUENTIAL SCAN
Filters: EXTEND (cw.bfa.zeitpunkt ,year to month) = datetime(2006-01) year to month
In dem Statement
select bfa.zeitpunkt from bfa where extend (zeitpunkt, year to month) = "2006-01"
wurde allerdings nur deshalb der Index benutzt, weil hier nur das Indexfeld selbst gesucht wurde. Dabei ist natürlich
der Lauf über den Index schneller als ein sequentieller Lauf über alle Sätze. Im 2.Statement dagegen wird das
Feld forum_autoren_nr hinzugenommen, so daß ein Lauf über den Index alleine nur dann etwas
nützen würde, wenn der Filter
where extend (zeitpunkt, year to month) = "2006-01"
den Index nutzen würde, was aber nicht der Fall ist.
Grundsätzlich gilt: Die Extension "year to month" ist kein Teilfeld eines aus mehreren Feldern zusammengesetzten
Index, sondern lediglich eine Teilzeichenkette des aus einem einzigen Feld bestehenden Index. Und diese
Teilzeichenkette kann vom Index natürlich nicht benutzt werden.
Ein Ausweg aus dieser Situation wäre die Generierung eines zusätzlichen Feldes, in welchem "year to month"
gespeichert wird.








Kommentar hinzufügen