Mailinglisten-Archive |
Hallo, ich habe am NCI einen Online-Service entwickelt, der Teilmengen von Anti-Krebs-Screening-Daten anhand verschiedener Kriteria erstellt. http://cactus.nci.nih.gov/services/nscselect/ So kann man beispielsweise eine Suche nach allen Verbindungen in der Datenbak durchführen, die Einträge für die Zell-Linien 1-6 enthalten. Meine Methode funktioniert dabei folgendermaßen: 1.Schritt (sehr schnell, da die optimierte Haupttabelle (gi50) verwendet wird; Es werden alle NSCNr mit Einträgen für die Zellinie 1.01 ermittelt und in eine temporäre Tabelle geschrieben): insert into tmp.tmp_seek1 select gi50.NSCNr from gi50 where CellID=1.01 group by NSCNr; Ergebnis: ca. 32000 NSC-Numern werden in die tmp_seek1 Tabelle geschrieben 2.ter Schritt (langsam, da die Suche nun auch auf der temp. Tabelle durchgeführt wird. Alle NSCNr aus der ersten Anfrage werden daraufhin überprüft, ob sie auch Einträge für die Zell-Linie 1.02 in der Haupttabelle enthalten. Die NCSNr für die das zutrifft werden in eine zweite temporäre Teabelle geschrieben.): insert into tmp.tmp_seek2 select gi50.NSCNr from gi50,tmp.tmp_seek1 where gi50.CellID=1.02 and tmp.tmp_seek1.NSCNr=gi50.NSCNr group by NSCNr; Die folgenden Suchen sind dann ähnlich zu Schritt 2, so daß man am Ende eine Teilmenge hat, die alle Kriterien erfüllt. Die Benutzung der temporären Tabellen und die daraus resultierenden Datenbankanfragen sind für einen Webdienst einfach zu langsam; so dauert der 2.te Schritte über 2 Minuten. Welche Möglichkeiten gibt es, die Anfrage schneller zu machen. Sind die folgenden Methoden geeigneter? a) Alle NSCNr aus dem ersten Schritt zum AUfbau eines extrem langen Queries verwenden, wie: insert into tmp.tmp_seek2 select gi50.NSCNr from gi50,tmp.tmp_seek1 where gi50.CellID=1.02 and (NSCNr=1 or NSCNr=2 or NSCNr=3 ....<up to number 32000>..) group by NSCNr; b) Eine Schleife über alle 32000 NSCNr in TCL schreiben, wie foreach nscnr $allnscsfromstep1 { dbase exec $dbhandle "insert into tmp.tmp_seek2 select $tblname.NSCNr from gi50 where CellID=1.02 and NSCNr=$nscnr group by NSCNr" } Irgendwelche Ratschläge ? Frank -- Institute of Organic Chemistry, University of Erlangen-Nuernberg Naegelsbachstrasse 25, D-91052 Erlangen (Germany) Tel (+49)-(0)9131-85-26579 Fax (+49)-(0)9131-85-26566 email: franko_(at)_chemie.uni-erlangen.de WWW : http://www2.ccc.uni-erlangen.de/oellien/ http://www2.ccc.uni-erlangen.de/ChemVis/ --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive