Mailinglisten-Archive |
Hallo, > Von: Jens Vollmer[SMTP:voll-mailings_(at)_gmx.de] > > ich stehe vor dem problem, dass ich für eine produktpromo einen > login-bereich erstellen muss, > für den es 1.4 millionen keys gibt, welche nach einmaligem gebrauch > ungültig werden. > alles gut und schön. > > mein ansatz war (beim stand von 50 000 keys) diese per rand(); zu erzeugen > und dann in 5 versch. tabellen > zu schreiben und beim seiten aufruf den tabellennamen als 1. teil des keys > zu benutzen. das würde > die abfrage auf 10000 nummern reduzieren. allerdings will der kunde jetzt > 1.4 mill. keys > auf das produkt drucken und ich mache mir sorgen um die performance bei > der abfrage. > > es gibt doch bestimmt bedeutend elegantere lösungen, als alle nummern aus > der db zu holen, oder? > oder mache ich mir zu viele gedanken um die zahlenmassen? > du machst dir zu wenig gedanken über die Funktion einer Datenbank. Was spricht gegen folgendes: tabelle keys char(32) (oder wie auch immer) schluessel unique indiziert In dieser Tabelle speicherst du deine Schlüssel. Wenn du wissen willst, obs ein test_schlüssel existiert: select * from keys where schluessel=test_schluessel; und dann kannst du elegant über mysql_numrows() rausfinden, wieviel ergebnisse es gegeben hat. Das kann nur 0 oder 1 sein. (wegen unique). Die Suche geht bei einem Index SEHR schnell, relativ egal wieviel Einträge da drin sind. Das können auch 100 Mio Schlüssel sein .... Grüße, Mathias
php::bar PHP Wiki - Listenarchive