Aktivieren Sie die Trace-Optionen, um das vom LIBNAME-Modul generierte SQL zu sehen:
options sastrace=',,,d' sastraceloc=SASLOG;
1
options sastrace=',,,d' sastraceloc=SASLOG;
Wenn Sie eine komplexe SQL-Abfrage mit Ihren JOIN und WHERE im Protokoll sehen: Das LIBNAME-Modul funktioniert gut (Implizites Pass-Through erfolgreich). Das Problem könnte an fehlenden Datenbankindizes liegen.
Nachteil: Sie verlieren die Portabilität (der Code wird spezifisch für Oracle/SQL Server/usw.).
proc sql;
connect to oracle (user=... password=... path=...);
create table want as
select * from connection to oracle
(
SELECT A.id, B.value
FROM tableA A
INNER JOIN tableB B ON A.id = B.id
/* Ce code est exécuté par Oracle, pas SAS */
);
disconnect from oracle;
quit;
1
PROC SQL;
2
connect to oracle (user=... password=... path=...);
Verlassen Sie sich nicht auf Ihre Uhr. Verwenden Sie die integrierten Benchmarking-Tools, um Ihre Tests (LIBNAME vs. Pass-Through vs. Data Step) zu vergleichen:
options FULLSTIMER;: Zeigt im Protokoll die CPU-Zeit, die reale Zeit und den verwendeten Speicher für jeden Schritt an.
Es gibt keine Magie, nur vergleichende Tests (FULLSTIMER) in Ihrer spezifischen Umgebung.
Zur Optimierung Ihrer massiven Joins:
Prüfen Sie zuerst mit SASTRACE, ob LIBNAME seine Aufgabe erfüllt.
Testen Sie das explizite Pass-Through, wenn das implizite fehlschlägt.
Schließen Sie die Option nicht aus, Datensubsets abzurufen, um einen lokalen MERGE durchzuführen, falls der Datenbankserver überlastet ist.
Wichtiger Haftungsausschluss
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.