Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Preslaganje rednog broja-ID -brzina

[es] :: Firebird/Interbase :: Preslaganje rednog broja-ID -brzina

[ Pregleda: 6079 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.isp.telekom.rs.



Profil

icon Preslaganje rednog broja-ID -brzina31.12.2010. u 12:46 - pre 161 meseci
Tabela trenutno ima 100.000 linija, stalno se popunjava,briše ali se uvećava, podaci se unose po najvećem rednom broju, ali se prethodni brišu, tako da ima 100.000 linije a najveći redni broj je 500.000
Hteo sam jednom mesečno podatke presložiti od 1 do koliko ima linija.
to sam uradio po principu FOR petlje od 1 do koliko ima linija i EDIT-ovao ID kolonu sa vrednosti perlje, dosta brzo to uradi ali onda ide snimanje tj. naredba "ApplyUpdates", to na sporijem P4 traje 30 min.

Kako da to napravim da traje kraće, jer kada bude više linija trajaće predugo ?

Koristim Firebird 2.0 sa Delphijem 7 i Zeos komponentama.
 
Odgovor na temu

rambo
Dejan Petković
Beograd

Član broj: 6095
Poruke: 190
*.dynamic.sbb.rs.



+6 Profil

icon Re: Preslaganje rednog broja-ID -brzina02.01.2011. u 14:46 - pre 161 meseci
Vrlo jednostavno: napravi stored proceduru koja radi to isto i izvrši je iz Delphi koda. Tako bi trebalo da celu stvar ubrzaš višestruko.
"There is a theory which states that if ever anybody discovers exactly what the
Universe is for and why it is here, it will instantly disappear and be replaced by
something even more bizarre and inexplicable. There is another theory which states
that this has already happened."
-- Douglas Adams
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.isp.telekom.rs.



Profil

icon Re: Preslaganje rednog broja-ID -brzina02.01.2011. u 15:11 - pre 161 meseci
Nisam te razumeo.
 
Odgovor na temu

darko_sudarov
ProConto Software doo
Kikinda

Član broj: 89262
Poruke: 136
89.216.49.*



Profil

icon Re: Preslaganje rednog broja-ID -brzina02.01.2011. u 19:30 - pre 161 meseci
Code:

CREATE SEQUENCE DROP_ME;
-- CIM TO MOZES DA ODRADIS KAO STO SI NAPISAO TO POLJE (OVDE ID POLJE) NIJE PK
-- ILI PAK MOZDA JESTE ALI NE POSTOJI FK
-- BITNO JE DA JE JEDINSTVENO

SET TERM ^ ;

CREATE OR ALTER PROCEDURE NEW_PROCEDURE 
RETURNS (
    ID INTEGER,
    T_M_P INTEGER)
AS
BEGIN
  FOR
    SELECT ID,GEN_ID(DROP_ME, 1)  FROM TEST_TABLE --ID JE TVOJE POLJE KOJE ZELIS DA POREDJAS REDOM, TEST_TABLE JE TVOJA TABELA
    ORDER BY ID --OVAJ ORDER TI MOZDA NE TREBA A MOZDA TREBA ZAVISI KAKO TI STOJE REKORDI
    INTO :ID,
         :T_M_P
  DO
  BEGIN
  UPDATE TEST_TABLE SET ID =  :T_M_P WHERE ID = :ID;
  END
END^

SET TERM ; ^

GRANT SELECT,UPDATE ON TEST_TABLE TO PROCEDURE NEW_PROCEDURE;

GRANT EXECUTE ON PROCEDURE NEW_PROCEDURE TO SYSDBA;

EXECUTE PROCEDURE NEW_PROCEDURE ;
COMMIT WORK;

DROP PROCEDURE NEW_PROCEDURE ;
DROP SEQUENCE DROP_ME;
--ILI AKO VISE VOLIS POSTAVI NA NULU
-- ALTER SEQUENCE DROP_ME RESTART WITH 0;
COMMIT WORK;



predpostavljam da je rambo mislio na nesto ovako,tj proc u bazi NEW_PROCEDURE pa da je pozoves iz delphija metodom ExecuteProcedure (postavis komponentu TSQLStoredProc). Ja sam ovde stavio da se sve dropuje zbog moje test tabele ali logika je ta.
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.isp.telekom.rs.



Profil

icon Re: Preslaganje rednog broja-ID -brzina03.01.2011. u 00:25 - pre 161 meseci
Hvala na pomoći,
ali imam mali problem
ubacio sam kod u IBExpert i probao
složi lepo do 1326 i onda skoči na 85996 i tako napravi još par skokova do 250000 a ima 38000 linija

ne znam gde je greška.

mogu okačiti bazu(ima oko 3 mb zapakovana) pa se može probati direkto na njoj.

[Ovu poruku je menjao Brkic dana 03.01.2011. u 01:39 GMT+1]
 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
*.dynamic.isp.telekom.rs.

Sajt: www.topcode.rs


+2 Profil

icon Re: Preslaganje rednog broja-ID -brzina03.01.2011. u 07:10 - pre 161 meseci
Trebalo bi da radi Darkova procedura. Ja bi je ipak resio bez generatora, mada je princip isti...
Code:
CREATE OR ALTER PROCEDURE NEW_PROCEDURE 
RETURNS (
    ID INTEGER,
    T_M_P INTEGER)
AS
begin
  T_M_P = 0;
  FOR
    SELECT ID FROM TEST_TABLE
    ORDER BY ID
    INTO :ID
  DO
  BEGIN
    T_M_P = T_M_P + 1;
    UPDATE TEST_TABLE SET ID =  :T_M_P WHERE ID = :ID;
  END
end
 
Odgovor na temu

darko_sudarov
ProConto Software doo
Kikinda

Član broj: 89262
Poruke: 136
89.216.49.*



Profil

icon Re: Preslaganje rednog broja-ID -brzina03.01.2011. u 18:09 - pre 161 meseci
Problem ti je verovatno order i kod mene i kod childa jer ako imas rastuci niz i otvoris tabelu sve ce biti ok ali ako nemas rastici niz onda kada otvoris tabelu deluje kao da postoje rupe.
child je dao bolje resenje i primeni ga.



[Ovu poruku je menjao darko_sudarov dana 03.01.2011. u 19:35 GMT+1]
 
Odgovor na temu

darko_sudarov
ProConto Software doo
Kikinda

Član broj: 89262
Poruke: 136
89.216.49.*



Profil

icon Re: Preslaganje rednog broja-ID -brzina03.01.2011. u 18:15 - pre 161 meseci
Ako ne uspes postavi bazu pa cemo napraviti :-)


[Ovu poruku je menjao darko_sudarov dana 03.01.2011. u 19:38 GMT+1]
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.isp.telekom.rs.



Profil

icon Re: Preslaganje rednog broja-ID -brzina03.01.2011. u 20:03 - pre 161 meseci
Hvala vam puno na pomoći,
nisam uspeo,
napravim proceduru(sve prođe kako treba) i pokrenem je sa RUN Procedure iz IB Expert-a i sada se ne desi ništa.

Evo šaljem bazu sa IB Expert-om
http://rapidshare.com/files/440627423/baza.rar
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
..143.102-dsl.net.metronet.hr.



+19 Profil

icon Re: Preslaganje rednog broja-ID -brzina05.01.2011. u 18:05 - pre 161 meseci
Citat:
Brkic: Hvala vam puno na pomoći,
nisam uspeo,
napravim proceduru(sve prođe kako treba) i pokrenem je sa RUN Procedure iz IB Expert-a i sada se ne desi ništa.

Evo šaljem bazu sa IB Expert-om
http://rapidshare.com/files/440627423/baza.rar
Citat:
Brkic: Hvala vam puno na pomoći,
nisam uspeo,
napravim proceduru(sve prođe kako treba) i pokrenem je sa RUN Procedure iz IB Expert-a i sada se ne desi ništa.

Evo šaljem bazu sa IB Expert-om
http://rapidshare.com/files/440627423/baza.rar
Citat:
Brkic: Hvala vam puno na pomoći,
nisam uspeo,
napravim proceduru(sve prođe kako treba) i pokrenem je sa RUN Procedure iz IB Expert-a i sada se ne desi ništa.

Evo šaljem bazu sa IB Expert-om
http://rapidshare.com/files/440627423/baza.rar


IB expert zna stvarati probleme.
 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
*.dynamic.isp.telekom.rs.

Sajt: www.topcode.rs


+2 Profil

icon Re: Preslaganje rednog broja-ID -brzina06.01.2011. u 10:02 - pre 161 meseci
Skinuo sam tvoju bazu, nisi rekao o kojoj tabeli se radi, ali cini mi se da je rec o AKCIE... Ona procedura sto sam napisao prethodno radi ok, znaci opet:
Code:
CREATE OR ALTER PROCEDURE NEW_PROCEDURE 
RETURNS (
    ID INTEGER,
    T_M_P INTEGER)
AS
begin
  T_M_P = 0;
  FOR
    SELECT ID FROM AKCIE
    ORDER BY ID
    INTO :ID
  DO
  BEGIN
    T_M_P = T_M_P + 1;
    UPDATE AKCIE SET ID =  :T_M_P WHERE ID = :ID;
  END
end

Citat:
MarkoBalkan: IB expert zna stvarati probleme.
Nema to veze sa IBExpertom. Procedura kada se pozove, onda radi FB a ne IBE. Verovatno se nesto ne razumemo sa Brkicem, "communication breakdown, it's always the same..." :)
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.isp.telekom.rs.



Profil

icon Re: Preslaganje rednog broja-ID -brzina06.01.2011. u 15:15 - pre 161 meseci
Hvala ti schild na posvećenom vremenu,
da radi se o tabeli AKCIE,
onda ja ne radim nešto kako treba,
na koji način si ubacio proceduru u bazu i kako si je pozvao iz Deplhija ?
ili da pošalješ primer koji si probao da vidim iz njega.

[Ovu poruku je menjao Brkic dana 06.01.2011. u 20:18 GMT+1]
 
Odgovor na temu

schild
Dejan Šild
TopCode Software
Subotica

Član broj: 59888
Poruke: 138
*.dynamic.isp.telekom.rs.

Sajt: www.topcode.rs


+2 Profil

icon Re: Preslaganje rednog broja-ID -brzina06.01.2011. u 19:23 - pre 161 meseci
Otvoris bazu u IBE, ides na Tools/SQL Editor, i onda tamo kopiras ovu proceduru sto sam napisao. Pokrenes je sa F9, i ides na Commit.
Onda je pronadjes sa strane u Procedures, otvoris je duplom klikom, i pokrenes je opet sa F9, pa Commit. Onda otvoris tabelu i podledas podatke, trebalo bi da je sve ok. Znaci, procedura poredja redom vrednosti polja ID tako da nema "rupa".

Iz Delphija, zavisi koje komponente koristis, ali pokreces proceduru ako u Query komponentu uneses SQL:
Code:
execute procedure NAZIV_PROCEDURE;
i uradis ExecSQL (ili nesto slicno, zavisi od komponente). A vecina komponenti ima i StoredProcedure (neka varijacija ovog naziva) komponentu, pa je jos lakse.

Prvo proveri da li ti pokretanje procedure u IBExpertu daje trazeni rezultat, i tek onda predji na Delphi.
 
Odgovor na temu

Brkic

Član broj: 55360
Poruke: 1222
*.dynamic.isp.telekom.rs.



Profil

icon Re: Preslaganje rednog broja-ID -brzina06.01.2011. u 20:02 - pre 161 meseci
Hvala ti puno schild,
uspeo sam,
ja sam u IBE unosio na drugačiji način i upisao je on da ima nova procedura ali nikako nisam mogao videti kod te procedure koji sam uneo,zato nije ni radilo,
sada na tvoj način sve se vidi i lepo radi, treba mu 1,5s da sve presloži.
Radi i kod iz Delph-a.

još jednom puno hvala na pomoći i strpljenju.


[Ovu poruku je menjao Brkic dana 06.01.2011. u 23:30 GMT+1]
 
Odgovor na temu

Enan

Član broj: 256278
Poruke: 22
*.dynamic.isp.telekom.rs.



Profil

icon Re: Preslaganje rednog broja-ID -brzina18.01.2013. u 20:01 - pre 136 meseci
Da li neko moze da napise sta se dobija ovim preslaganjem, ako je u pitanju brzina izvrsavanja querija,
da li se primecuje razlika u brzini? Kada je potrebno raditi preslaganje, kada tabela dostigne veliki broj
redova i rup u id-evima ili ?
 
Odgovor na temu

savkic
Igor Savkić

Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Preslaganje rednog broja-ID -brzina21.01.2013. u 01:10 - pre 136 meseci
> Da li neko moze da napise sta se dobija ovim preslaganjem,

Ako imaš 100 stavki pa obrišeš 50, neki brojevi od 1 do 100 će biti slobodni (neće imati stavku), ako želiš da ti IDevi idu redom onda to možeš uraditi. Nema razloga da se primarni ključ (ako je ovo polje ID o kome se govorilo, doista primarni ključ), ikada menja.

> ako je u pitanju brzina izvrsavanja querija, da li se primecuje razlika u brzini?

Ne.

> Kada je potrebno raditi preslaganje, kada tabela dostigne veliki broj redova i rup u id-evima ili ?

U opštem slučaju nema razloga da se to radi.
 
Odgovor na temu

[es] :: Firebird/Interbase :: Preslaganje rednog broja-ID -brzina

[ Pregleda: 6079 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.