[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2

Thema: SQL Update

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.932
    Zitat Zitat von cbe Beitrag anzeigen
    dann spart man sich den EXISTS.
    (Ich mag die coalesce-Funktion einfach, vor allem wegen dem Namen...)

    Gruß, Christian
    @Christian
    Nur solltest Du dabei berücksichtigen, dass bei der Verwendung von EXISTS nur die Datensätze, für die die Bedingung zutrifft geändert werden, während bei der Verwendung von COALESCE ALLE Datensätze geändert werden. Im Klartext heißt das, dass der Datensatz gelesen und unverändert wieder (physisch) geschrieben wird. Wenn Du also eine große Datei hast und nur wenige Sätze ändern willst, kann die Performance schon ganz schön in den Keller gehen, vor allem wenn man berücksichtigt, dass man auf Satz-Sperren (bzw. entsprechende Wartezeiten) beim Lesen von Datensätzen, die man eigentlich nicht ändern will laufen kann.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.932
    @Baldur
    Manchmal ist es hilfreich, den Key auf der linken Seite per cast anzupassen, also
    decimal(a.Key, n, y) = b.key
    oder
    zoned(a.key, n, y) = b.key

    Das funktioniert auch mit ungleich langen Zeichenfeldern:
    cast(a.key as char(nn)) = b.key
    Bringt allerdings bei Joinen von ungleichen Feldern wenig bis gar nichts! Ein Index kann (zumindest) vor Release 6.1 nur verwendet werden, wenn das Original-Feld unverändert ist. Die Verwendung von CAST oder einer skalaren Funktion bewirkt, dass das Original-Feld verändert wird. Die Länge spielt dabei keine Rolle!

    Allerdings kann durch die explizite Konvertierung Einfluss darauf genommen werden kann, welche Datei "führend" verarbeitet wird und mit der anderen Datei verknüpft wird. Für die Datei, bei der die Original-Felder verwendet werden, kann ein Index verwendet werden. Für die andere Datei kann allenfalls ein Teilschlüssel verwendet werden.

    Ansonsten konvertiert SQL intern selber (zumindest seit V5R3)!

    Natürlich sollten z.B. in Where-Bestimmungen immer die gleichen oder compatible Datentypen verwendet werden. Wenn also z.B. das Feld Kunden-Nr. alphanumerisch ist, die Kunden-Nr. in diesem Feld jedoch numerisch ist, kann man das folgende angeben:
    PHP-Code:
    Where  KundeNr 4711 
    Der Datensatz wird gefunden, allerdings muss für jeden zu lesenden/vergleichenden Satz eine Konvertierung vorgenommen werden, um identische Datentypen zu vergleichen zu können, was Performance kostet.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. SQL Update aus zwei Dateien mit 3 Schlüsselfeldern
    By mk in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-12, 08:53
  2. update per sql
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-09-06, 08:22
  3. SQL Update über 2 i5 Systeme
    By daniel.ludwig in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 21-07-06, 12:41
  4. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •