2016-05-19 8 views
0

Hallo, ich weiß, wie man zufällige Zeile bekommen, aber ich brauche eine optimierte Möglichkeit, ich migrieren riesige Daten von einem Schema zu einem anderen in oracle.Andere als Count Validierung auf jedem Tisch. Ich tue zufällige Aufzeichnung Validierung (für jede beliebige Zeile, ich bin Überprüfung, ob alle Spaltenwerte übereinstimmen oder nicht zwischen den Datenbanken) .Ich bin mitWie bekomme ich eine zufällige Zeile aus der Datenbank in besserer Weise

SELECT * FROM (SELECT * FROM ADM_USER ORDER BY dbms_random.value) WHERE rownum = 1; 

Davor war ich mit:

select * from ADM_USER where ADM_USER_ID=(select Round(dbms_random.value(1,max(ADM_USER_ID))) from ADM_USER) 

Das Problem mit letzterem ist, dass Werte in ADM_USER_ID nicht zusammenhängend sind. In den meisten Fällen gibt die Abfrage eine leere Ergebnismenge zurück. Die erste ist gut, aber für Tische mit großer Kardinalität dauert es 6 bis 7 Sekunden.

Vielen Dank im Voraus.

+0

'SELECT * FROM ADM_USER wobei ADM_USER_ID = (SELECT TOP 1 ADM_USER_ID VON ADM_USER ORDER BY dbms_random.value);' – artm

+2

Ist dies MySQL oder Oracle? – mathguy

+0

SELECT TOP (1) ... ORDER BY NEWID() – Biscuits

Antwort

1

Für Oracle, schauen Sie sich die SAMPLE-Klausel an. Im Folgenden wird sich nach dem Zufallsprinzip 1% einer Tabelle

select * from MDSYS.SDO_COORD_REF_SYS sample(1); 

Sie noch die rownum=1 Filter obendrein hinzufügen.

+0

danke Gary. Es ist besser, denke ich – FaheemFayaz

Verwandte Themen