-
Bei wenigen Sätzen/Zeilen und Spalten in einer Datei ist ein Table Scan immer schneller als ein Index-Zugriff!
Wenn die SQL-Abfrage wirklich mit der SQE und nicht mit der CQE ausgeführt wird, ist ein temporärer Index quasi permanent, d.h. existiert bis zum nächsten IPL und kann von allen Jobs (bzw. allen SQL-Abfragen) verwendet werden.
Der Optimizer interagiert mit dem Statistics-Mangager und erhält Informationen darüber wie groß der Anteil der ausgewählten Sätze am Gesamt ist. Bis zu ca. 20% wird ein Index bevorzugt.
Was mich allerdings wundert ist, dass bei einer Abfrage ein temporärer Index gebildet wird. Das passiert eigentlich nur, wenn man darauf besteht mit Echt-Daten (Datenkopie zulässig = *NO oder SENSITIVER CURSOR) zu arbeiten.
Birgitta
-
Hi Brigitta,
Danke für die Antwort!
Es ist alles reines SQL (Tabelle, Schema), und auch mit der SQE abgearbeitet. Der Temporäre Index bleibt auch bestehen.
Nach löschen, der Statistik-Daten hat der Optimizer zumindest keine Row-Liste erstellt.
Jetzt geht er nur noch über den Temporären Index.
Allerdings wenn ich den Filter entsprechend auswähle, dass möglichst wenig Datensätze ausgegeben werden, wird ein Table-Scan durchgeführt
Interessant ist auch, dass wenn ich den zusatz "FETCH FIRST ROW ONLY" verwende, trotzdem über den längeren Zugriffspfag gegangen wird, da trotzdem alle Datensätze gelesen werden und erst zum Schluss der erste Satz ausgegeben wird.
Danke jedenfalls für die Unterstützung!
lg Andreas
-
FETCH FIRST ROW ONLY ist für den Optimizer nicht relevant.
Hierfür ist OPTIMIZE FOR n ROWS gedacht.
Zusätzlichen Einfluss kann man über SET OPTION ALWBLK=..., ALWCPYDTA=... sowie die QAQQINI nehmen.
-
... da gehts der Query Engine nicht viel anders als der Kriminalpolizei: die rät - und manchmal falsch
D*B
-
Vielen Dank für die zahlreichen Antworten!!
Über SQL selbst hab ich es nicht mehr geschafft ein einfaches Table-Scan durchzuführen.
PHP-Code:
select * from myftplog
where actcnt = 1332
fetch first row only
optimize for 1 rows
for read only
Müsste scheinbar wirklich wie Fuerchau geschrieben hat, mit SET OPTION oder in der QAQQINI einstellungen vornehmen, dass zB keine temporären Objekte erstellt werden dürfen. (Für diese Abfrage zumindest.)
So wie es aussieht ist die Antwort von BenderD am plausibelsten.
Danke auf jeden Fall für eure Hilfe
Similar Threads
-
By co_steffl in forum IBM i Hauptforum
Antworten: 19
Letzter Beitrag: 08-12-09, 12:14
-
By RaMai in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 02-11-07, 17:21
-
By RLurati in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 20-10-06, 09:09
-
By RLurati in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 20-10-06, 08:31
-
By Brownie in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 28-07-04, 10:56
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks