Wieder ein mal habe ich z.T. massive Probleme mit dem SQL-Optimizer nach der Umstellung von V6R1 auf V7R1.

Zugegriffen wird per ODBC oder OLEDB.

SQL's die mit V6R1 noch schön schnell liefen, laufen nun mit V7R1 z.T. erheblich langsamer.
Indexe, die früher verwendet wurden, werden nun ignoriert.
Statt dessen tauchen vermehrt Debug-Meldungen wie "temporäre Ergebnistabelle erstellt, Dauer 1,0 Sekunden".
Das Problem, diese Ergebnistabelle enthält genau so viele Sätze wie das Original und das bei weniger als 1000 Sätzen.

Eine andere Tabelle enthält einen Schlüssel nach Firma/Werk/Kunde.
Ich frage nur ab "select * from Kunde where Firma=? and Werk=?" um alle Kunden eínes Mandanten zu bekommen.
Der Optimizer schlägt einen Index nach "Werk/Firma/Kunde" vor, ich kann mir das nicht erklären und verwendet wird dann auch noch Eingangsfolge.

Per ODBC frage ich ebenso Schemainformationen ab.
Hier verwende ich die Standard-ODBC-Schemaabfragen, also nichts mit eigenen -SYSCOLUMNS-Zugriffen, das regelt dann der Treiber selber.
Es werden gezielt die Spalten einer LIB/Datei geladen.
Im Joblog findet man dann Einträge wie "Empfohler Zugriffspfad für SYSCOLUMNS".
Was für ein Schwachsinn!!!

Bei der Verwendung des CA-ODBC-Treibers werden die Schemaabfragen sogar mit Querytimeout-Überschreitung abgewiesen!
Verwende ich den IBMDASQL-OLEDB-Treiber, klappt zumindest dieses.

Ich weiß auch nicht, was sich die IBM da mal wieder gedacht hat.

Abfragen, die mit V6R1 noch 1-2 Sekunden gebraucht haben (mehrere 1000 Sätze) dauern nun mehrere (> 15) Minuten!