Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Optimizacija upita

[es] :: MySQL :: Optimizacija upita

[ Pregleda: 3217 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.253.*



+1 Profil

icon Optimizacija upita26.02.2009. u 13:17 - pre 184 meseci
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
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Optimizacija upita26.02.2009. u 13:23 - pre 184 meseci
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 ...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Optimizacija upita26.02.2009. u 13:27 - pre 184 meseci
da, bilo bi korisno da bacis izlaz od:

Code:

EXPLAIN EXTENDED select .... 


dakle da vidimo sta mysql kaze za taj tvoj select ... mozda moze nesto da se uradi bez pravljenja udf-a :)
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.253.*



+1 Profil

icon Re: Optimizacija upita26.02.2009. u 13:30 - pre 184 meseci
UDF... prvi put cujem:) kako da se prebacim na to da vidim kako to sljaka
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.253.*



+1 Profil

icon Re: Optimizacija upita26.02.2009. u 13:34 - pre 184 meseci

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

Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Optimizacija upita26.02.2009. u 13:42 - pre 184 meseci
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
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.mysql.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Optimizacija upita26.02.2009. u 13:44 - pre 184 meseci
evo izguglah par primera za windoze za udf (primeri)

http://www.codeproject.com/KB/database/mygroupconcat.aspx
http://rpbouman.blogspot.com/2...mysql-udfs-with-microsoft.html
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
92.36.249.*



+1 Profil

icon Re: Optimizacija upita26.02.2009. u 13:51 - pre 184 meseci
hvala na UDFu... i
poslao sam ti PP i hvala jos jedanput..
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

[es] :: MySQL :: Optimizacija upita

[ Pregleda: 3217 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.