a_ddk amater Beograd
Član broj: 188454 Poruke: 3 79.101.228.*
|
Tebi dakle treba da se generisu brojevi po ovakvom formatu:
X5Y6ABCDEF
Ovo ima 10 brojeva duzine, 5 i 6 su fiksni a ostali svi mogu biti od 0-9
Bez kursora i petlje trebalo bi da moze ovako:
Imas tabelu Brojevi (Broi int) i u njioj 10 redova, sa vrednostima Broj = 0,1,2,..8,9
Da bi kombinovao sve vrednosti na pozicijama X Y pises nesto kao:
SELECT X = X.Broj, Y= Y.Broj
FROM Brojevi AS X, Brojevi AS Y
Ovo ce ti dati dekartov proizvod tabele Brojvi sa samom sobom, dakle 10x10 = 100 redova.
Po istom principu dodajes i ostale brojeve:
SELECT
X = X.Broj
, Y= Y.Broj
, A= A.Broj
, B= B.Broj
, C= C.Broj
, D= D.Broj
, E= E.Broj
, F= F.Broj
FROM Brojevi AS X
, Brojevi AS Y
, Brojevi AS A
, Brojevi AS B
, Brojevi AS C
, Brojevi AS D
, Brojevi AS E
, Brojevi AS F
Imaces 10^8 kombinacija, sto je 100,000,000 rekorda. Nije ni cudo sto je sporo, ali sta se moze. Kompjuteri su izmisljeni da bi nesto radili. Cisto iz radoznalosti radi u inkrementima (prvo samo X,Y pa onda X,YA pa XYAB, da vidis kako utice n brzinu. Verovatno nece proci sve u 2 sekunde, ali ce verujem biti brze od kursora.
U Accesu, za 6 brojeva (0 do 5) radi za 2 sekunde, sa 7 brojeva treba 20 sekundi (deset pota vise nego za prethodnih 7) pa pretpostavljam da ce za 8 brojeva trebati 10 puta vise nego za 7, to jest 200 sekundi, dakle malo vise od tri minuta. Nazalost, vreme izvrsavanja verovatno ne ide linearno, pa ce biti i vise. U MS SQL bice brze nego u Accessu. ej, to ti je ipak 100,000,000 rekorda. Sto miliona. Ako ces da ih insertujes u neku tabelu, pazi da te ne ubije administratr baze ;-)
O, evo ga, pukao kveri u Accesu, posle 5 minuta, na nekih 64,000,000 rekorda javio 'not enough memory in temporary disk' Bice da se posao mora razbiti na delove, barem u Accessu.
:-)
[Ovu poruku je menjao a_ddk dana 21.07.2008. u 15:14 GMT+1]
|