Tema: Re: MSSQL 2008 ir prioritetinis duomenu istraukimas
Autorius: Jornada Del Muerto
Data: 2012-04-11 12:31:33
    Ne cia gale menesio formuojama saskaita faktura, beje klientai gali turet ir tukstancius issiustu siuntu/laisku per 1 menesi ar net tukstancius per diena (pvz. visoki spameriai, kaip bankai ar kokios GSM bendroves), tai duomenu buna padoriai :) nes paprastai po menesio spausdinama simtam ar net tukstanciam klientu fakturos, aisku vienu metu po 1, bet tai pvz gali daryti 10 vadybininku :) na pakolkas kaip ir sukasi, bet uzsakovas turi fantazija sioje vietoje vis kazka patobulinti, praplesti tuo paciu ir plecia savo veikla, kaip sakant sistema tobuleja beveik kiekviena menesi kazkuo :) 

    Del to vat ir mastau apie optimizacijas :)

"zZz" <zZz@zirzilia.lt> wrote in message news:jm27jp$hlq$1@trimpas.omnitel.net...
> Čia kas? Funkcija?
> 
> "Jornada Del Muerto" <jornada@lythum.lt> wrote in message 
> news:jm1msp$3lq$1@trimpas.omnitel.net...
>> Sveiki,
>>
>>    Turiu tokia situacija su MSSQL 2008, kada reikia istraukti tam tikra 
>> informacija prioriteto tvarka isrenkant viena ar kita irasa is lentos.
>>
>>    Trumpai aktuali traukimui struktura:
>>
>> Siuntos
>> ----------
>> Id
>> KlientoId
>> MiestoId
>> GatvesId
>> Svoris
>>
>> SiuntuKainos
>> ----------
>> Id
>> KlientoId
>> MiestoId
>> SvorisNuo
>> SvorisIki
>>
>> Dilema ta, kad kainu yra 4 tipai (tiksliau nuo siol bus).  Egzistuoja 
>> (jeigu id=0 reiskia skirta visiems):
>>
>> 1. Bendros/globalios kainos siuntoms (KlientoId = 0, miestoId = 0);
>> 2. Bendros/globalios kainos konkreciam miestui (KlientoId = 0, miestoId = 
>> X) - (sis kainos variantas atsiras tik dabar);
>> 3. Kliento bendros kainos (KlientoId = X, miestoId = 0);
>> 4. Kliento kainos konkreciam miestui (KlientoId = X, miestoId = X).
>>
>> Prioriteto tvarka bandoma priskirti sias kainas: 4, 3, 2, 1.
>>
>>    Kaip sakant jei klientas turi savo kainas konkreciam miestui tai jas, 
>> jei tam miestui ner, bet yra aplamai kliento kaina, tada priskiriama ji, 
>> jeigu nera kliento kainu bet globalios kainos turi kainas tam miestui tai 
>> si kaina, jeigu nera siam miestui globalios kainos tada bendra kaina.
>>
>>
>> Siuo momentu as darau taip:
>>
>> SELECT
>>    kainosId,
>>    CASE
>>        WHEN K4.Id Is Not Null  THEN K4.Id
>>        WHEN K3.Id Is Not Null THEN K3.Id
>>        WHEN K2.Id Is Not Null THEN K2.Id
>>        ELSE K1.Id END AS "priceId",
>>   ......... kiti laukai....
>> FROM
>>    Siuntos S
>> LEFT JOIN
>>    SiuntuKainos K1 On K1.KlientasId = 0 And K1.MiestasId = 0 And S.Svoris 
>> BETWEEN K1.SvorisNuo And K1.SvorisId And ...kitos salygos...
>> LEFT JOIN
>>    SiuntuKainos K2 On K2.KlientasId = 0 And K2.MiestasId = S.MiestasId And 
>> S.Svoris BETWEEN K2.SvorisNuo And K2.SvorisId And ...kitos salygos...
>> LEFT JOIN
>>    SiuntuKainos K3 On K3.KlientasId = S.KlientasId And K3.MiestasId = 0 
>> And S.Svoris BETWEEN K3.SvorisNuo And K3.SvorisId And ...kitos salygos...
>> LEFT JOIN
>>    SiuntuKainos K4 On K4.KlientasId = S.KlientasId And K4.MiestasId = 
>> S.MiestasId And S.Svoris BETWEEN K4.SvorisNuo And K4.SvorisId And ...kitos 
>> salygos...
>>
>>
>> Tai vat, kokie pasiulymai optimizuoti si shmota? :)
>>
>> PS.
>>    Viskas kaip ir veikia, tik dabar reikes dadeti kaina Nr 2 (Globalios 
>> miestu kainos), tai susimasciau gal cia ka eitu pagerinti?
>> 
>