U dva projekta sa sličnom tematikom sam radio sledeće:
- generišem niz od 0 - 999,999 elemenata gde
Kôd:
a[i] = i, i = 0 .. 999,999
- izaberem kulturan RND generator i:
Kôd:
rnd1 = NextRnd();
rnd2 = NextRnd();
for(j=0; j < 1,000,000; j++)
{
swap(a[rnd1],a[rnd2]);
rnd1 = NextRnd();
rnd2 = NextRnd();
}
Kreiram dve tabele:
MAXUSED( Current int);
Randoms( RecNo Int PK, Value Int);
U MaxUsed ide inicijalno samo jedan slog, Current = 0;
Randoms popunim sa:
Kôd:
for(j=0; j < 1,000,000; j++)
{
INSERT INTO RANDOMS( j, a[j]);
}
Sad, kako ko dođe na sajt:
- zaključam prvi slog (i jedini) od MaxUsed, pokupim vrednost (nextToUse), uvećam za jedan i vratim u prvi slog
- dohvatim slog br. nexToUse (po indeksu iz Randoms) i vrednost (Value)
Ovako imam intenzivan proces jednom (kada se radi deployment projekta) a posle trivijalne operacije koje su jako brze (update jednog sloga, select drugog).