-
Hallo nochmal,
Danke für die Antworten bisher.
@Dieter
Wenn ich einen create index mache, beinträchtig das die bestehenden RPG-Anwendungen/PFs und LFs nicht ?
d.h. LF und INDEX kommen sich nicht in die Quere.
Ich möchte zwei Tabellen verknüpfen.
Tabelle taba
af1
af2
af3
af4
...
af50
Tabelle tabb
bf1
bf2
bf3
...
bf30
PHP-Code:
SELECT a.af1,a.af2,a.af3,b.bf30
FROM taba a INNER JOIN tabb b
ON a.af1 = b.bf1 AND a.af2 = b.bf2 AND a.af3 = b.bf3
WHERE a.af3 = 4711 AND a.af50 <> ''
Ziel ist, alle Sätze aus a, bei denen af50 gefüllt und af3=4711, und alle passenden aus b.
Was muss ich beachten, damit das SQL-Statement flott abgearbeitet wird?
Welche Felder müssen indiziert sein ?
(Birgitta schreibt ja, dass man LFs nicht verwenden soll)
Nach diesem Muster habe ich versucht einen Join bei uns zu testen, aber der war recht langsam.
Danke für eure Hilfe
Gruß jogi
-
Hallo,
logische Dateien und SQL indices können nebeneinander existieren, sie können sogar den gleichen Zugriffsweg verwenden (Shared Access Path).
Man sollte allerdings beachten, wenn man einen SQL index und eine DDS beschriebene logische Datei hat, dass man den Index zuerst erstellt und die logische Datei anschließend. In diesem Fall wird nur ein einziger Zugriffspfad erstellt. Im umgekehrten Fall werden 2 Zugriffspfade erstellt, die beide bei jedem Insert, Update oder Delete auf die physische Datei bzw. Tabelle aktualiert werden müssen.
Für eine gejointe Abfrage müssen Zugriffswege (in logischen Dateien oder SQL Indices) über die Felder, über die gejoint werden soll vorhanden sein. Weiterhin ist vorteilhaft, wenn die Felder, die in der Where-Bedingung mit = abgefragt werden ebenfalls in dem Index angegeben sind.
Birgitta
-
Hallo Birgitta
Für eine gejointe Abfrage müssen Zugriffswege (in logischen Dateien oder SQL Indices) über die Felder, über die gejoint werden soll vorhanden sein. Weiterhin ist vorteilhaft, wenn die Felder, die in der Where-Bedingung mit = abgefragt werden ebenfalls in dem Index angegeben sind.
bedeutet dass, es muss ein LF für taba mit genau den Feldern
af1,af2,af3 und af50
und
ein LF für tabb mit genau den Feldern
bf1,bf2,bf3
existieren
oder können in den LFs auch weitere Felder vorhanden sein, und die SQL-Enginge sucht sich dann seinen richtigen Weg ?
jogi
-
Der Create Index tangiert die Anwendungen, die per ISAM Methoden zugreifen (was anderes ist der sogenannte native I/O nicht. nicht negativ. Was deinen Join angeht, solltest du auf alle Fälle bei beiden Tabellen einen gleich gestaffelten Index über die Join Felder anlegen. Bei der where Klausel hat die Bedingung für a.af3 eine hohe Selektivität, sollte dahinter eine unique Bedingung liegen, dann sollte man auch diese in der Datenbank als Constraint oder unique Index anlegen; die Bedingung für af50 lässt sich nicht unterstützen.
Im richtigen Leben legt man zuerst alle fachlich erforderlichen Constraints an ( Primary Key, unique Bedingungen und referentielle Bedingungen, wie bei jeder SQL Datenbank eben und das war dann 80 % der Arbeit, den Rest kann man sich auch von der Datenbank sagen lassen, wenn der Job unter debug läuft sagt die Datenbank in dignostic Meldungen welche Indexe helfen könnten.
Bezüglich langsam: was ist denn hier konkret unter langsam zu verstehen?
D*B
 Zitat von jogisarge
Hallo nochmal,
Danke für die Antworten bisher.
@Dieter
Wenn ich einen create index mache, beinträchtig das die bestehenden RPG-Anwendungen/PFs und LFs nicht ?
d.h. LF und INDEX kommen sich nicht in die Quere.
Ich möchte zwei Tabellen verknüpfen.
Tabelle taba
af1
af2
af3
af4
...
af50
Tabelle tabb
bf1
bf2
bf3
...
bf30
PHP-Code:
SELECT a.af1,a.af2,a.af3,b.bf30
FROM taba a INNER JOIN tabb b
ON a.af1 = b.bf1 AND a.af2 = b.bf2 AND a.af3 = b.bf3
WHERE a.af3 = 4711 AND a.af50 <> ''
Ziel ist, alle Sätze aus a, bei denen af50 gefüllt und af3=4711, und alle passenden aus b.
Was muss ich beachten, damit das SQL-Statement flott abgearbeitet wird?
Welche Felder müssen indiziert sein ?
(Birgitta schreibt ja, dass man LFs nicht verwenden soll)
Nach diesem Muster habe ich versucht einen Join bei uns zu testen, aber der war recht langsam.
Danke für eure Hilfe
Gruß jogi
Similar Threads
-
By Mr.iSeries in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 25-01-07, 09:46
-
By deni87991 in forum IBM i Hauptforum
Antworten: 21
Letzter Beitrag: 07-08-06, 17:42
-
By alexander may in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 08-12-05, 20:25
-
By Tobse77 in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 22-06-05, 10:02
-
By Robi in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 06-04-05, 17:59
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