Moin Ralf,
Ich erzeuge ein Array das die Zahlen 1-1.000.000 enthält. Mit einer Zufallsfunktion nehme ich ein Element, lösche es aus dem Array
Dieser Schritt ist überflüssig :-) Nimm einen Array und speichere, welche Ziffer zwischen 1 und 1000000 du schon hattest. Damit sparst du dir 1.000.000 Operationen zuzüglich zu den teuren Slice-Operationen.
Was meint Ihr dazu?
Geht das auch eleganter?Ich an deiner Stelle würde einen UNIQUE-Index über EAN legen und schlicht solange mit einem Zufallsgenerator eine Zufallszahl (innerhalb eines gewissen Wertebereichs) erzeugen und versuchen den Datensatz einzufügen, bis das einfügen nicht mehr an dem UNIQUE-Index scheitert. Damit hast du eine eindeutige, nicht fortlaufende Ziffer, das ganze frei von race conditions und Kollisionen.
Ja, o.k. die Erzeugung der lookup table ist in meiner Ausführung nicht gerade optimal. Die muss aber nur einma erzeugt werden. Da kommt es auf eine Laufzeit von ein paar Sekunden nicht an.
Im Laufenden Betrieb gibt sdann ja nur einen DB Zugriff. Wenn man über EAN und IAN je einen Index legt, sollte das recht performat sein.
Die Frage ging mehr in die Rechung ob man nicht auch ohne so einen im Vorfeld gebaute lookup table eine eindeutige und nicht so leicht nachvollziehbare Abbildung von EAN <->IAN hinbekommt.
MfG
Ralf