Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 4.570 pregleda

Najnovija ↓

Optimizacija upita 26.02.2009. u 14:17 · pre 215 meseci #1
Imam jedan problem koji me strasno nervira.. naime, napravio sam funkciju koja na osnovu nekih parametara izracunava povrsinu

Code:
funkcija(par1,par2,par3,...)


ova funkcija mi je potrebna u upitu koja na osnovu parametara iz iste tablice uzima podatke i racuna tj dijeli vrijednost sa vrijednoscu, povrsinom, koju dobijem iz funkcije na osnovu parametara iz tablice

Code:
select masa1/funkcija(par1,par2,par3,...),
masa2/funkcija(par1,par2,par3,...)
masa3/funkcija(par1,par2,par3,...)
masa4/funkcija(par1,par2,par3,...)
masa5/funkcija(par1,par2,par3,...)
masau/funkcija(par1,par2,par3,...)
.
.
.


moj problem je sto se ovo izvrsava skoro 16 sek. :( nervira me... moze li se ovo nekako optimizovati? ima li neko ideju?

plizzz
Potpis
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Re: Optimizacija upita 26.02.2009. u 14:23 · pre 215 meseci #2
napravio si funkciju kao

Code:

DELIMITER |
CREATE FUNCTION prosek(n1 INT, n2 INT, n3 INT, n4 INT)
  RETURNS INT
  DETERMINISTIC
  BEGIN
     DECLARE avg INT;
     SET avg = (n1+n2+n3*2+n4*4)/8;
     RETURN avg;
END|
DELIMITER;


ili kao UDF ?

ako je prva varijanta, napravi UDF i resi problem, ima da radi 1000x brze :) (zgodan sajt)

ako ne mozes da napravis UDF onda je jedini nacin da promenis tu funkciju da umesto da je pozivas X puta, da je pozoves jednom ...
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Optimizacija upita 26.02.2009. u 14:30 · pre 215 meseci #4
UDF... prvi put cujem:) kako da se prebacim na to da vidim kako to sljaka
Potpis
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Re: Optimizacija upita 26.02.2009. u 14:34 · pre 215 meseci #5

evo ga EXPLAIN EXTENDED
Code:

id    select_type    table    type    possible_keys    key    key_len    ref    rows    filtered    Extra
1    SIMPLE    R    ALL                    12751    100    Using where; Using temporary; Using filesort
1    SIMPLE    V    ref    artikal    artikal    258    database2.R.artikal    1    100    Using index condition
1    SIMPLE    D    ref    radnja,ispostava    ispostava    258    database2.R.ispostava    10    100    Using index condition; Using where
Potpis
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Re: Optimizacija upita 26.02.2009. u 14:42 · pre 215 meseci #6
dao sam ti link za UDF .. nije bas "da se prebacis" ... to je fora da napravis .so odnosno .dll odnosno .stagodjezatvojoperativnisistemexternabiblioteka tj da napravis u c-u funkciju i onda je dodas u mysql .. mysql je onda vidi kao "nativnu" funkciju te ista radi kao i bilo koja druga mysql funkcija ....

potreban ti je gcc na linuxu ili visual studio na windozama ... imas tamo primere kako se to radi, ako budes imao problema kukaj pa da pomazemo


explain deluje da "moze bolje" ... ali moraces da bacis ceo upit i "show create table imetabele\G" za sve tabele koje ucestvuju u upitu da vidimo da li moze a se popravi
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: Optimizacija upita 26.02.2009. u 14:51 · pre 215 meseci #8
hvala na UDFu... i
poslao sam ti PP i hvala jos jedanput..
Potpis
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme