Ich habe meine Suche erschöpft oder verstanden, wie wir unser Problem mit einer SQL-Abfrage effizienter lösen können.
Das mitgelieferte SQL-Skript holt aus 3 Tabellen, deren Zeilen 40.970.221 entsprechen. Dies natürlich für 3 Wafer, aber Sie können das durch 3 dividieren, und das ist mein Standard-Datenzugriff.
Irgendwelche Vorschläge, wenn es welche gibt? Ich bin dazu verdammt, die Zeit ertragen zu müssen, die nötig ist, um dies alles in den Griff zu bekommen.
SELECT
CASE
WHEN t2.testname = 'test_1' THEN t3.ts
WHEN t2.testname = 'test_2' THEN t4.ts
WHEN t2.testname = 'test_3' THEN t5.ts
END AS TimeStamp,
t1.testdate,
t1.wafer_number,
t2.rownum,
t2.colnum,
t2.subrow,
t2.subcol,
t2.part_name,
t2.part_number,
t2.testname,
t2.set_id,
t2.trmode,
t2.channel,
t2.teststate,
t2.refstate,
t2.filterstate,
t2.data_id5,
CASE
WHEN t2.testname = 'test_1' THEN t3.input_1
WHEN t2.testname = 'test_2' THEN t4.input_2
WHEN t2.testname = 'test_3' THEN t5.input_3
END AS INPUT
t3.output_1
t3.output_2,
t3.output_3,
t4.output_1,
t4.output_2,
t4.output_3,
t5.output_1,
t5.output_2
FROM tst_master t1
LEFT OUTER JOIN table_2 t2
ON ( t2.run_id = t1.run_id )
LEFT OUTER JOIN table_5 t5
ON ( t5.header_id = t2.header_id )
LEFT OUTER JOIN table_3 t3
ON ( t3.header_id = t2.header_id )
LEFT OUTER JOIN table_4 t4
ON ( t4.header_id = t2.header_id )
WHERE ( ( t1.wafer_number IN ( 'wafer_1' , 'wafer_2' , 'wafer_3' ) ) )
AND ( t2.testname IN ( 'test_1', 'test_2', 'test_3' ) )
ODBC tendiert dazu, langsam zu sein. Du könntest es versuchen:
- Ausführen Ihrer Abfrage in einem Tool wie PL / SQL Developer, SQL Navigator oder Toad. Diese Produkte haben einen schnelleren Zugriff auf Oracle
- Exportieren Sie die Daten in eine CSV-Datei
- Importieren Sie die CSV-Datei in JMP
Wenn Sie über einen SQL-Server verfügen, gibt es ähnliche Produkte. mit keinem von ihnen nur vertraut.
Danke für die Antwort... Das ist eine interessante Idee. Ich werde es versuchen
Eine schnellere CPU und mehr RAM helfen immer.