[NEWSboard IBMi Forum]

Thema: SQL Insert

  1. #1
    Joe is offline [professional_User]
    Registriert seit
    Mar 2001
    Beiträge
    365

    SQL Insert

    Hallo Forum.

    Schon wieder ich...

    Wie prüfe ich sinnvoll das Vorhandensein von Sätzen beim
    Insert?

    1. Tabelle mit Unique Key definieren , Insert absetzen und
    SQLCODE prüfen

    oder

    2. Select Count(*) und bei > 0 kein Insert.

    oder

    3. ???

    Ich verwende Pkt. 1

    Den "Select Count(*)" habe ich jetzt in verschiedenen Programmen oder Beispielen gesehen. Wie sieht es denn da
    mit der Performance aus wenn eine Tabelle mehrere Mio. Sätze
    enthält. Oder wie "zählt" der Count?

    Gruss
    Joe

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Den Insert auf einen Fehler laufen zu lassen ist (meistens) besser, da zwischen dem "select count(*)" und dem Insert ein anderer Job den Insert durchführen kann.
    Der Select gibt zwar den momentanen Stand, der kann sich aber Millisekunden später schon ändern.

    Der Select ist schnell, wenn es über die Felder der where-Bedingung eine LF (Index) gibt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo Joe,

    direkter INSERT ist das Beste

    SELECT COUNT(*) ist Murks, weil das nur heisst das jetzt noch keiner da war, beim tatsächlichen INSERT könnte sich das geändert haben.

    Wenn bei vorhandenem Satz ein Update erfolgt, könnte man auch diesen zuerst probieren und wenn der schief geht den INSERT machen. Das ist dann minimal billiger, wenn der Satz eher vorhanden ist, aber komplizierter zu programmieren, wenn der Satz dann doch da ist, weil einer schneller war.

    Wieder mal: mit der Peorformance, das ist meist viel zu kurz gedacht; Datenbankperformance ist dominiert von zwei Dingen:
    1. Zugriffspfade (hat mit den Statements nix zu tun)
    2. Sperrkonflikte (dauert bei Deadlock 60 sec.)
    Zweiteres wird zu 99,9 % übersehen!!! Statt dessen wird gerne über Kleinigkeiten spekuliert und schwadroniert. Das einzige was hier zählt ist messen!!!

    mfg

    Dieter Bender

  4. #4
    Joe is offline [professional_User]
    Registriert seit
    Mar 2001
    Beiträge
    365
    Danke für die, wie immer, prompten und qualifizierten Anworten.

    Gruss Joe

Similar Threads

  1. SQL Insert in schleife
    By Robi in forum IBM i Hauptforum
    Antworten: 20
    Letzter Beitrag: 16-03-09, 10:32
  2. SQL: Insert bei NULL
    By woki in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 31-10-06, 10:21
  3. SQL Insert: Zeichenbegrenzung???
    By Deficiency in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-01-06, 09:00
  4. SQL Insert ein Feld Hochzählen
    By linguin in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-01-06, 15:46
  5. SQL Insert
    By Deficiency in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 01-12-05, 11:22

Berechtigungen

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