- //koje varijable u konacnici zelimo vidjeti
- SELECT tbl_123.var_1, tbl_123.var_2, tbl_45.var_3, tbl_45.var_5
Avko | 01.10.2017 15:27 |
---|---|
Predmet:Kako smanjiti vrijeme query upita kada imam 1 x INNER JOIN i 3 x LEFT OUTER JOIN vrijeme za upit je 44.4 sec, Kako to optimizirati? SELECT tbl_1.datum, tbl_2.id_ime, tbl_3.broj_1, tbl_3.broj_2, tbl_4.ime FROM tbl_4 INNER JOIN tbl_2 ON tbl_4.id=tbl_2.id LEFT OUTER JOIN tbl_1 ON tbl_4.id=tbl_1.id LEFT OUTER JOIN tbl_3 ON tbl_4.broj_2=tbl_3.broj_2 LEFT OUTER JOIN tbl_4 ON tbl_3.broj_1=tbl_4.broj_1 WHERE tbl_1.datum>='2017-10-02' AND tbl_3.datum=tbl_1.datum ORDER BY tbl_3.datum ASC LIMIT 0 , 50 nemam primari key jer ga nemogu umitai zbog valjda vrijednosti koje se ponavljaju |
Gjoreski | 01.10.2017 16:37 |
---|---|
Predmet:Re: Kako smanjiti vrijeme query upita Kod mene dogo traejne upita je bilo zbog to sto nekih polja u tabeli nisu bile indeksirane. Ja sam pravio qureija sa vise jointa pa su radili brze nego ovo sta si ti naveo. |
Avko | 01.10.2017 19:22 |
---|---|
Predmet:Re: Kako smanjiti vrijeme query upita Mozes, molim te, objasniti razliku index iprimari key. Isto tako miobjasni na koja polja se stavljaindex moze li se na txt i brojevei kako se to radi? Hvala. |
Gjoreski | 01.10.2017 20:38 |
---|---|
Predmet:Re: Kako smanjiti vrijeme query upita Svi polja niz koi se vrsi pretraga je dobro da su indeksirani tako guerija rade brze. Ides u EDIT Table i tamu potrazis gje se dodaje Novi Index. Dodas novi index das mi naziv i u index Column dodas za koje polje je taj index. Na jedan index mogu biti vise polja. Ja praktikijem jedan index jedo polje. Evo i fotografije. |
|
Prilozi: Index MYSQL.rar (Velicina datoteke:61.93 KB) |
Avko | 01.10.2017 22:40 |
---|---|
Predmet:Re: Kako smanjiti vrijeme query upita Hvala, sutra cu to malo proucavati pa cu se javiti. Nekada davno sam , jos u dos-u, proucavao dbase i foxbase ali davno je to bilo. Hvala jos jednom. |
Avko | 02.10.2017 10:16 |
---|---|
Predmet:Re: Kako smanjiti vrijeme query upita sada sa indexima povecalo se na 50.2865 sec jedino mi jedno polje nije htijelo indeksirati. Javilo gresku: #1170 - BLOB/TEXT column 'ime' used in key specification without a key length mozda bi trebalo nekako drugacije upit sloziti. Ima li veze kojim redosljedom idu ona spajanja? Kada bi ih preslozili dali bi to utjecalo na brzinu upita? |
Gjoreski | 02.10.2017 14:06 |
---|---|
Predmet:Re: Kako smanjiti vrijeme query upita Daj postavi table pa da pogledamo sta je sta. Neka bude tabele sa podatcima da mozemo testirati. |
Avko | 02.10.2017 14:18 |
---|---|
Predmet:Re: Kako smanjiti vrijeme query upita jos jedno pitanje i onda cu odustati, najvjerojatnije. u jednoj tabli mi je tbl_1.broj (txt) a u drugoj tabli mi je tbl_2.broj (int) i kada usporedujem : INNER JOIN tbl_2 ON tbl_1.broj = tbl_2.broj da li bi tu mogao biti problem kada se usporeduje INT polje i TXT polje? |
zxz | 02.10.2017 14:41 |
---|---|
Predmet:Re: Kako smanjiti vrijeme query upita Da moze biti proble u stavri radi sporije. Jer moras jedno pretvoriti u string ili drugo u broj. Onako usporedjivanje i nije sigurno. E sad ovako. Ukoliko vrsimo pretragu po nekom polju onda je preporucljivo da to polje bude indeksirano sa ima ili nema duplikata. Treba napomenuti i ovo da racunar brze radi sa stringovime nego sa brojevima. Ukoliko je ovo gore ispostovano onda neka tabela do milion redova nebi trebala da pretstavlja nikakav problem. Dalje neznam jer nisam imao priliku imati vise podataka. Ukoliko radi sporo onda zakaci primjer jer je mozda nesto drugo u pitanju. |
Avko | 05.10.2017 12:53 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Predmet:Re: Kako smanjiti vrijeme query upita evo rijesio Trebalo je upotrebljavati "aliase" i dva SELECT-a pa ajmo pogledati. Zbog jednostavnosti varijable su var_1, var_2 ... var_7, a table su tabla_1...tabla_5
Nakon sto napravimo upt na svih 5 tabela zelimo da nam se na ekranu prikazu sljedeci rezultati: var_1, var_2, var_3, var_5 to cemo dobiti sljedecim: PreuzmiIzvorni kôd (Text):
Koristimo aliase, ja sam stekao dojam da ubrzavaju upite. Prvi upit na tabele 1,2 i 3. kolone koje zelimo vidjeti ili kasnije sa njima raditi odaberemo sa SELECT PreuzmiIzvorni kôd (Text):
alias tabli dobijemo tabla_1=t1, tabla_2=t2 i tabla_3=t3, varijablama ne dajemo aliase PreuzmiIzvorni kôd (Text):
rezultatu dajemo alias ime, tbl_123. To je tabla sa nastala od tabli t1,t2 i t3 sa prikazom var_3,var_7 i var_6 PreuzmiIzvorni kôd (Text):
(tabla_1, tabla_2, tabla_3) INNER (tabla_4, tabla_5) PreuzmiIzvorni kôd (Text):
sada radimo alias drugu tablu koja je presjek table_4 i table_5 kolone koje zelimo vidjeti nakon INNER-a tabli 4 i 5 PreuzmiIzvorni kôd (Text):
presjeku table 4 i table_5 dajemo alias ime tbl_45 PreuzmiIzvorni kôd (Text):
uvijet za (tabla_1, tabla_2, tabla_3) INNER (tabla_4, tabla_5) PreuzmiIzvorni kôd (Text):
i to je to 0,07 sec a prije min 44 sec evo sada cijeli kod skupa: PreuzmiIzvorni kôd (Text):
|