Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Zweiteilige Primärschlüssel vergleichen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von ukulele, 24 April 2012.

  1. ukulele

    ukulele Datenbank-Guru

    Habe an einer Stelle nach wie vor ein Problem das auf meine Performance geht. Ich habe zwei Spalten mit UNIQUEIDENTIFIERn, die zusammen sowas wie den PK bilden. Nun muss ich alle Datensätze aus Tabelle A finden, die nicht in Tabelle B vorhanden sind. Normalerweise würde ich
    Code:
    SELECT    *
    FROM    t1
    WHERE    pk NOT IN (    SELECT    pk
                        FROM    t2 )
    machen, was natürlich mit 2 Schlüsseln nicht geht. Ich kann beide als VARCHAR Verketten und dann vergleichen, aber das dauert bei ca. 2 Mio Datensätzen einfach zu lange...
     
  2. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Hy,

    so.. bitte nehmt bei solchen Vergleichsstatements IMMER "EXISTS" !!!!

    SELECT *
    FROM t1
    WHERE NOT EXISTS ( SELECT 1
    FROM t2
    where t2.pk = t1.pk )


    Dann sollte es auch mit Verketten gehen!


    Nachtrag: EXISTS ist viel performanter als IN!!!

    Weiters kannst du deine PKS besser vergleichen!

    SELECT *
    FROM t1
    WHERE NOT EXISTS ( SELECT 1
    FROM t2
    where t2.pk1 = t1.pk1
    AND t2.pk2 = t1.pk2



    )

    LG
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden