Mailinglisten-Archive |
Aloha, > Von: Beck, Mike[SMTP:mike.beck_(at)_ibmiller.de] > > worüber ich mir mehr Gedanken machen würde: > Du sagst, dass die Keys nur einmal verwendet werden dürfen? > argel, das hatte ich gar nich gelesen ;-) > Ich würde davon > absehen die keys danach zu löschen, lieber eine spalte 'giltnoch' als enum > Feld und da noch einen Index drauf - das ändern des Primärindex könnte > beim > löschen einer Zeile aus dieser DB nämlich vergleichsweise lang dauern, das > nimmt wahrscheinlich den DB Server mehr mit als zu prüfen ob dahinter im > Enumfeld 'J' oder 'N' steht. > hm, ein enum-Feld für J,N braucht wohl genausoviel bytes wie ein Char-Feld.... deswegen würd ich letzteres nehmen, das machts einfacher. Den Datensatz zu löschen, halte ich für wenig sinnvoll, da wie du schon schreibst, das wesentlich länger dauert, den Index über die Zufallszahlen neu aufzubauen. (Wäre eigentlich ein super Anwendungsfall für Oracles Indexbased Tables oder wie die Dinger heißen ;) ein Index auf die Enum/Char-Spalte mit geloescht j/n macht kein Sinn, denn wenn die ~ haelfte der Nummern verbraucht ist, wird der gar nicht verwendet... > (ich tippe mal es wird sogar noch schneller, wenn Du auf das enumfeld > _keinen_ index machst - ich wette MySQL verwendet ihn sowieso nicht (es > wird > immer nur ein Index auf einmal verwendet und da wird der auf dem Primärkey > für MySQL interessanter sein - somit macht Dir ein Index auf dem Enum nur > wieder das einfügen/ändern langsamer) > man könnte auch ein zusammengesetzten index aus schluessel,gebraucht machen, aber das nützt auch nichts, der muss dann ja aktualisiert werden, wenn der Schluessel gebraucht wurde. Ich würde dann ne Tabelle machen mit schluessel char/int (je nach Anforderungen) gebraucht char(1) default 'n' Dann die Schluessel importieren, und dann erst den Index auf die Spalte erstellen (wesentlich schneller!!!) create index .... on schluessel (oder wie das bei mysql heißt ;) So, dann kannst du anfangen zu arbeiten. Bei der Prüfung auf den Schlüssel würde ich das so machen: update tabelle set gebraucht='j' where schluessel=pruefschluessel and gebraucht='n' danach mysql_affected_rows() aufrufen. Das liefert in dem Fall (eindeutiger Schluessel) 0 oder 1 zurück. Das ist die anzahl der mit dem update geänderten Datensätze. 0: schluessel gibts nicht und/oder schon gebraucht --> ablehnen 1: schluessel gibts und er wurde noch nicht gebraucht. Der update kostet dich so viel wie das select (denk ich mal :) und du hast in eim aufwasch schluessel geprüft und falls gültig, ungültig gemacht. Grüße und schönen Feierabend, Mathias > Gruß > > -- > Mike Beck > mike.beck_(at)_users.sourceforge.net > -- > ** http://www.php-center.de ** > Die PHP-Liste: mailto: php_(at)_phpcenter.de > http://lists.phpcenter.de/mailman/listinfo/php
php::bar PHP Wiki - Listenarchive