[Oracle] Update tabeli
juras - 13-08-2006 00:22
[Oracle] Update tabeli
Witam Mam dwie tabelki, z ktorych zawartosc jednej służy do update'owania drugiej. Niby proste, ale pod uwage brana jest jednoczesnie zawartosc dwoch kolumn i jesli taki zestaw nie wystepuje w tabeli A, to rekord ma byc dolozony z B. Zalezy mi na w miare szybkim rozwiazaniu - obie tabelki licza sobie po okolo 400.000 rekordow
Z gory dziekuje za wszelkie podpowiedzi
pozdrawiam Jurek
Sławomir Szyszło - 13-08-2006 00:22
Dnia Thu, 10 Aug 2006 20:34:38 +0200, "juras" <alskar@o2.pl> wklepał(-a):
>Witam >Mam dwie tabelki, z ktorych zawartosc jednej służy do update'owania drugiej. >Niby proste, ale pod uwage brana jest jednoczesnie zawartosc dwoch kolumn i >jesli taki zestaw nie wystepuje w tabeli A, to rekord ma byc dolozony z B. >Zalezy mi na w miare szybkim rozwiazaniu - obie tabelki licza sobie po okolo >400.000 rekordow
W Oracle (chyba od wersji 9i) jest taka konstrukcja:
(...) WHERE (kolumna1, kolumna2) IN | NOT IN (select kolumna3, kolumna4 FROM tabela2 ...)
Mam nadzieję, że to pomoże, jeśli nie to napisz obszerniej co chcesz uzyskać. -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
Artur - 13-08-2006 00:22
> Mam dwie tabelki, z ktorych zawartosc jednej służy do update'owania drugiej. > Niby proste, ale pod uwage brana jest jednoczesnie zawartosc dwoch kolumni > jesli taki zestaw nie wystepuje w tabeli A, to rekord ma byc dolozony z B. > Zalezy mi na w miare szybkim rozwiazaniu - obie tabelki licza sobie po okolo > 400.000 rekordow
Potrzebujesz takiej konstrukcji jak MERGE, którą na przykład obsługuje DB2 (http://ibm.com/db2/express). Poszukaj, czy Twoja baza to potrafi, przypuszczam, że tak:
MERGE INTO tabela A USING (wybierasz zapytaniem rekordy z tabeli B) ON ( tu porównujesz pola tabeli A i B, najlepiej klucze)
WHEN MATCHED Uaktualniasz tabele A rekordem z B WHEN NOT MATCHED Wstawiasz rekord z B do A
Działa wydajnie, ponieważ jest wewnętrznie optymalizowane przez bazę danych jako jeden ciąg operacji (jedna instrukcja SQL).
Przykłady na: http://publib.boulder.ibm.com/infoce...c/r0010873.htm
Pozdrawiam,
-- Artur Wroński
juras - 13-08-2006 00:22
> W Oracle (chyba od wersji 9i) jest taka konstrukcja: > > (...) > WHERE (kolumna1, kolumna2) IN | NOT IN > (select kolumna3, kolumna4 FROM tabela2 ...) > > Mam nadzieję, że to pomoże, jeśli nie to napisz obszerniej co chcesz uzyskać. > -- Dzięki Przetestuje to jutro w pracy
pozdrawiam Jurek
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
Oracle 19g +Insert +Insert +Insert...
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
[Oracle] =?ISO-8859-2?Q?=A3=B1czenie_wierszy_z_zapytania_?==?ISO-8859-2?Q?w_jeden_string?=
=?iso-8859-2?q?[oracle_10g]_jak_da=E6_grant_do_gv$=2E=2E=2E=2E_=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plptsite.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|