Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Topic: Kiek metu jei zinom gimimo data - apskaiciavimas be php

Susiduriau su tokia keista dilema. Kam daryti funkcijas su php jei iskarto tapati galima padaryti su MySQL, bet ką laimiu aš? greitį, našumą, saugumą? Spėju, kad su php atlikti tam tikrus skaičiavimus saugiau nei su MySQL funkcijom. Ar aš klystu. įdomu būtų išgirsti nuomonę iš expertų. Ką patartumėte - Ar atlikinėti skaičiavimus kaip įmanoma dažniau naudojantis MySQL ar geriau duomenis apdoroti atskirai (su PHP).

štai toks pavyzdėlis:
Vartotojas formoje nurodo savo gimimo datą kuri yra saugoma MySQL'e tokiu formatu: yyyy-mm-dd (metai-menesis-diena)
Norėdamas apskaičiuoti vartotojo amžių pasidariau tokią PHP funkciją:

function amzius($data) {
    if (!isset($data) || $data == '' || $data == '0000-00-00') { return "N/A"; }
    else {
        $data = explode ("-", $data);
        $amzius = time() - mktime(0,0,0,$data['1'],$data['2'],$data['0']);
        $amzius = date("Y",$amzius) - 1970;
        return $amzius;
    }
}

Tačiau ar nebūtų protinga visą tą skaičiavimą atlikti su MySQL ir išvesti iškarto apskaičiuotą vartotojo amžių? Užklausa kuri gražina amžių atrodo maždaug taip:

SELECT
`id`,
IF(gimimo_data='0000-00-00','N/A',YEAR(FROM_DAYS(DATEDIFF(CURDATE(),gimimo_data)))) AS 'amzius'
FROM
`users`

Kokie vienokio ir kitokio būdo pliusai ir minusai gal užklausa neprotingai padariau bet ji veikia.

SELECT * FROM users WHERE gender = 'female' AND size > 'enough' AND leftsize = rightsize AND age >= 18 AND age < 30 LIMIT 1

Re: Kiek metu jei zinom gimimo data - apskaiciavimas be php

Tai reikia žiūrėti kam tau tų duomenų, kurioje vietoje ir kaip dažnai reikia. Taip pat gali palyginti veikimo greitį, serverio apkrovimą ir pan. Jeigu rezultatų reikia dar mysql'e (tarkim nautoji juos kitiems skaičiavimams) tada veiksmus gali atlikinėti duomenų bazėje. Jeigu tų duomenų reikia dažnai (t.y. duomenys įrašomi vieną kartą, o skaitomi pakankamai dažnai) tai apsimoka tą rezultatą iškarto patalpinti į atskirą stulpelį.

Beto, jeigu nesunku palygin veikimo greitį:
a) kei duomenys paimami iš MySQL ir skaičiuojami su PHP;
b) kai rezultatai skaičiuojami tik su MySQL o su PHP tik atvaizduojami;