konto usunięte

Temat: porównywanie tabel - optymalizacja

cześć,
Mam takie małe zadanie z porównywania dwóch tabel.
Jedna ma 100 tys. wpisów, druga 80 tys. wpisów.
Chcę potwierdzić, że te 80 tys. wpisów znajduje się w tabeli gdzie jest 100 tys. wpisów.

Niestety nie mogę porównać po id, tylko biorę zlepek 2 kolumn (tak jak na przykład zlepia się imię+nazwisko, żeby mieć jakiś unikalny klucz).

Po krótkich przemyśleniach padło na takie zapytanie :

select concat(a,b) from baza1.tabela where not in (select concat(a,b) from baza2.tabela);

Ale widzę już, że chyba będę czekać do jutra aż zwróci mi wynik.
Gdybym dostał w wyniku równo 20 tys. wpisów wtedy by oznaczało, że faktycznie jedna tabela zawiera się w drugiej.

Można zwiększyć wydajność takiego porównania? Na przykład przy użyciu join? Próbowałem napisać, ale niestety jakoś trudno mi porównać 2 concaty.
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: porównywanie tabel - optymalizacja

Krzysztof W.:
cześć,
Mam takie małe zadanie z porównywania dwóch tabel.
Jedna ma 100 tys. wpisów, druga 80 tys. wpisów.
Chcę potwierdzić, że te 80 tys. wpisów znajduje się w tabeli gdzie jest 100 tys. wpisów.

Niestety nie mogę porównać po id, tylko biorę zlepek 2 kolumn (tak jak na przykład zlepia się imię+nazwisko, żeby mieć jakiś unikalny klucz).

Po krótkich przemyśleniach padło na takie zapytanie :

select concat(a,b) from baza1.tabela where not in (select concat(a,b) from baza2.tabela);

Ale widzę już, że chyba będę czekać do jutra aż zwróci mi wynik.
Gdybym dostał w wyniku równo 20 tys. wpisów wtedy by oznaczało, że faktycznie jedna tabela zawiera się w drugiej.

Można zwiększyć wydajność takiego porównania? Na przykład przy użyciu join? Próbowałem napisać, ale niestety jakoś trudno mi porównać 2 concaty.
Left join po obu polach.

konto usunięte

Temat: porównywanie tabel - optymalizacja

Tak jak napial Slawomir, robisz np. cos takiego:
SELECT t.a, t.b FROM tabela t LEFT JOIN tabela2 t2 ON CONCAT(t.a,t.b) = CONCAT(t2.a,t2.b) WHERE t2.a IS NULL

Wtedy znajdziesz rekordy tabeli, ktore nie istnieja w tabela2.

EDIT: Ale odgrzałem kotleta :)Ten post został edytowany przez Autora dnia 28.04.15 o godzinie 22:27

Następna dyskusja:

Optymalizacja zapytania z G...




Wyślij zaproszenie do