Hirdetés

Új hozzászólás Aktív témák

  • nyunyu
    félisten

    mindig jó ötlet az adatbáziskezelőn belül tartani a melót.
    tehát ha meg tudod úgy oldani a programot, hogy ne kelljen kihúzgálni az adatot az sql szerverből, akkor az jobb.

    ezzel szemben van az, hogy jelen esetben is elszállhat a memóriaigény.

    legegyszerűbb kipróbálni és megmérni a lehetséges verziókat.

    nálad probléma lehet, hogy ebben a megoldásban a regexp rámegy azokra a sorokra is, amiket egy korábbi regexp már kizárt, ami elég nagy pazarlás. tehát ha külső nyelvből csinálnád a keresést, akkor lehet, hogy egyszerűbb lenne úgy, hogy csinálsz egy temporális táblát, abba belerakod az összes adat azonosítóját, amit az első regexppel szűrtél és még kell, majd utána a többivel sorban kiszórod belőle azt, ami nem kell. ha a regexpeket gyakoriság szerinti csökkenő sorrendben teszteled, akkor az hatékonyabb lesz.

    Ezzel viszont vissza is kanyarodtunk a kurzoron végigiterálós megoldáshoz, amit macerásabb megírni, mint az előbbi jólfésült selectet :DDD

    nagy vonalakban valami ilyesmi:
    declare
    cursor c is
    select regexp
    from regexptabla
    order by gyakorisag desc;

    r varchar2(100);

    begin
    truncate temptabla;

    open c
    loop
    fetch c into r;
    exit when c%NOTFOUND;

    insert into temptabla (voltmar)
    select e.ertek
    from eredetitabla e
    left join temptabla t
    on e.ertek = t.voltmar
    where t.voltmar is null
    and e.ertek ~ r;

    end loop;
    close c;

    select e.ertek
    from eredetitabla e
    left join temptabla t
    on e.ertek = t.voltmar
    where t.voltmar is null;

    end;

    (Nem vágom a postgre szintaxisát.)

Új hozzászólás Aktív témák