Citat:
negyxo:
Code:
SELECT TOP 3 * FROM Items
ORDER BY rnd(Item_ID)
Ovo resenje je ok funkcionalno (pod uslovom da su svi IDevi pozitivni), ali nije performance ok, zato sto se rnd evaluira za svaki red i onda se radi sort, za velike tabele je to veoma sporo.
Isto vazi i za dodatno random polje, sa tim sto je situacija jos gora, da bi sort radio brzo, polje mora da je indeksirano, u kom slucaju je update uzasno spor i lockuje celu tabelu.

Da ne pominjem da Access sucks sa transakcijama pa se postavlja pitanje sta ces da radis kad dva korisnika krenu da rade u isto vreme, ko kad radi select a ko kad update?
Genralno je Access lose resenje za bilo koju e-Commerce primenu, moj savet je predji na minimum MSDE/SQLExpress, narocito sad kad je dzabe
Ako to nije opcija, moj predlog je da skeniranje ogranicis na primary key i radis samo read za locirani red kao sto je Dejan Vesic napomenuo. Iako statisticki postoje problemi koje si naveo (sa rupama), sansa da se tako nesto desi je obrnuto proporcionalna broju redova i povecava se sa batch-brisanjima. Jedan od nacina da to resis je dodatna indexed kolona koju ces update jednom dnevno (nocu na primer), ili cak redje u zavisnosti od frekvencije brisanja redova i da taj red koristis umesto ID-a. Ubaci ovaj kod u neki modul:
Code:
Private rednibroj As Long
Sub resetRedniBroj()
rednibroj = 0
End Sub
' paarmetar je obaveza da bi query optimizer pozvao za svaki red (access tretira funkcije kao deterministicke)
Function NoviRedniBroj(dummy As Long) As Long
rednibroj = rednibroj + 1
NoviRedniBroj = rednibroj
End Function
a ovo je query koji pokreces po potrebi (nako sto prvo pozoves ResetRedniBroj

):
Code:
update items
set RedniID = NoviRedniBroj(ID)
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić