| 

.NET C# Java Javascript Exception

0

Performantes Einfügen

Häufig besteht die Anforderung, Einfügeoperationen in mehrere Zieltabellen durchzuführen. Falls die Quellinformationen aus einer großen Tabelle stammen, ist diese in jedem Fall zuerst vollständig zu lesen. Die offensichtliche Lösung, mehrere INSERT -Statements zu verwenden, führt dazu, dass diese Quelltabelle mehrfach zu lesen ist und somit unnötige Datenbankressourcen verschwendet werden. Die Verwendung von Multi-Table- INSERT ist hier die optimale Lösung. Mit einem einzigen INSERT -Statement lassen sich gleichzeitig mehrere Tabellen füllen oder auch abgeleitete Informationen einfügen.

INSERT ALL INTO product_activity VALUES (today, product_id, quantity) 
INTO product_sales VALUES (today, product_id, total) 
SELECT order_date today, product_id, SUM(unit_price) total, 
SUM(quantity) quantity FROM orders, order_items 
WHERE orders.order_id = order_items.order_id AND 
order_date = SYSDATE GROUP BY product_id; 

Wird die Operation zusätzlich parallelisiert durchgeführt, ist in der Regel eine weitere Performancesteigerung erreichbar. Im vorangehenden Beispiel wurde keine Bedingung angegeben. Es wurde also ein sogenanntes unconditional INSERT -Statement verwendet. Wie Sie zusätzlich Bedingungen nutzen, zeigt das folgende Beispiel:

INSERT ALL WHEN product_id IN (SELECT product_id FROM 
promotional_items) THEN INTO promotional_sales 
VALUES(product_id,list_price) WHEN order_mode = 'online' 
THEN INTO web_orders VALUES(product_id, order_total) 
SELECT product_id, list_price, order_total, order_mode 
FROM orders; 

(Ulrike Schwinn/Heinz-Wilhelm Fabry/am)

datenbanken
Schreibe einen Kommentar:
Themen:
datenbanken
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail
infounit Software GmbH
Sevitec Gruppe
InnoGames GmbH
myfactory International GmbH