Adatkarbantartás - Melyik megoldás gyorsabb

Adatkarbantartás - Melyik megoldás gyorsabb
2018-08-03T12:34:18+02:00
2018-08-03T20:24:10+02:00
2022-10-18T16:45:55+02:00
  • A ciklusos lassabb lesz valószínűleg. Már csak a rengeteg lekérdezés miatt is. Így belsőleg intézi az sql motor, de ha egyesével lekérdezed a max time és az eredménnyel kiszolgál, majd az alapján csinálsz vele valamit egy kliensen, akkor az elképzelhetetlenül lassú lehet. Persze, 100 partner esetén 20 évre visszamenőleg, évenként 200 sorból tök mindegy melyik.
    Mutasd a teljes hozzászólást!
  • A fő kérdés az, hogy melyik módszer a gyorsabb vagy létezik-e erre gyorsabb módszer?

    Szerintem ez sok mindentől függ, néhány:
    - Mekkora a táblák elemszáma
    - Megfelelő indexek vannak e
    - Milyen vason van a DB
    - Van e holt idő vagy használat közben kell ezt futtani

    Ezek alapján már lehet dönteni, hogy kisebb vagy nagyobb ciklusokban, esetleg egyben egy nagy update.
    Mutasd a teljes hozzászólást!
  • Igen, a kérdés az, hogy ennél jobb-e a 2. opció, amit írt.
    @op: Szvsz ha egyszeri vagy ritka a tranzakció, akkor használd az első megoldást, amit könnyebb implementálni. Ha gyakran kell és optimalizálni szeretnéd, akkor implementáld a másodikat, mert gyorsabb(nak kell lennie, ha jól van megírva).
    Mutasd a teljes hozzászólást!
  • Egy sql-ben nem tudod megoldani ?

    update pTorzs set LastDate = t.f1AsDate from ( select top 1 f1_asDate from ( select f1_asDate from t2000 union all select f1_asDate from t2001 union all select f1_asDate from t2002 ) t left join tPartner p on p.ID = t.partnerID order by t.f1_asDate desc ) t
    Persze, nem teszteltem, csak valami ilyesmiképpen állnék neki. SQL dolgozik vele ameddig akar - azért indexek legyenek. Gondolom, ez egy egyszeri játék.
    Mutasd a teljes hozzászólást!
  • És hát a kapcsoló mezőre is nyilván kell legyen index az év-táblákban.
    Mutasd a teljes hozzászólást!
  • Alacsony rekordszámnál teljesen mindegy lesz.

    Nagyobb rekordszámnál a 2. lesz a takarékosabb, mert az nem kapcsol hozzá a törzshöz 15 táblát feleslegesen. Még jobb lehetsz, ha a max dátumra teszel egy indexet, úgy olcsó lesz az eddigiek kiszűrése.
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Az adatbázisom PARTNER törzsén , egy hiányzó adatmező miatt,  kénytelen vagyok lefuttatni egy nagy lélegzetvételű updatet.
    Ez egy dátum rekord aminek a maximális értéke kellene.
    Ehhez kb. 15 másik tábla adatából kell összekaparni az adatokat a táblák évszámbontása végett.
    (Nevezve őket pl "ADAT2000", "ADAT2001",... stb tábláknak. )
    Két "járható" utat gondoltam ki egyenlőre, ha van jobb módszer akkor azt szívesen fogadnám és megvalósítanám.
    A fő kérdés az, hogy melyik módszer a gyorsabb vagy létezik-e erre gyorsabb módszer? :

    1.Módszer: 
      - Veszem a PARTNER törzs összes elemét .
      - Egyesével a táblák összekapcsolásának a maximumát veszem
      - Hozzárendelem a partner hez.

    Vagyis az első módszer egy táblák összekapcsolásának maximumát veszi SQL ben a partnerek számaszor.

    2.Módszer:
      Legnagyobb évszámú táblától ciklikusan lefele a legkisebbig
      - Veszem a maradék PARTNER-t akinek nincs beállítva a dátum adata
      - Veszem a x. évszámú táblát megnézem, hogy a partnereknek van e adata, és maximális adata

    Vagyis ez a módszer pedig  a partnerek egyre szűkített listáján, táblánként lefuttatott egyszerű lekérdezések maximuma. Így minden partnerhez bekerül a legutolsó dátum.

    Remélem érthetően fogalmaztam.
    Válaszaitokat előre is köszönöm.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd