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
tabla_1: | var_1 | | | | | | var_7 |
tabla_2: | var_1 | var_2 | | | | var_6 | |
tabla_3: | | var_2 | var_3 | | | | |
| | | | | | | |
tabla_4: | | | var_3 | var_4 | | var_6 | |
tabla_5: | | | | var_4 | var_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)://koje varijable u konacnici zelimo vidjeti
SELECT tbl_123.var_1, tbl_123.var_2, tbl_45.var_3, tbl_45.var_5
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):FROM
(
SELECT t3.var_3, t1.var_7, t2.var_6
alias tabli dobijemo tabla_1=t1, tabla_2=t2 i tabla_3=t3, varijablama ne dajemo aliase
PreuzmiIzvorni kôd (Text): FROM tabla_1 t1
INNER JOIN tabla_2 t2
ON t2.var_1 = t1.var_1
INNER JOIN tabla_3 t3
ON t3.var_2 = t2.var_2
WHERE t3.var_3 >= '2017-10-01'
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): // alias ime table koja je nastala iz tabli1,2 i3
) tbl_123
(tabla_1, tabla_2, tabla_3) INNER (tabla_4, tabla_5)
PreuzmiIzvorni kôd (Text):// INNER naredba mysql-a koja vrsi presjek
INNER JOIN
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): (
SELECT t4.var_3, t4.var_6, t5.var_4, t5.var_5
FROM tabla_4 t4
INNER JOIN tabla_5 t5
ON t5.var_4 = t4.var_4
WHERE t4.var_3 >= '2017-10-01'
presjeku table 4 i table_5 dajemo alias ime tbl_45
PreuzmiIzvorni kôd (Text):// nakon presjeka tabli4 i5 dajemo alias ime tbl_45
) tbl_45
uvijet za (tabla_1, tabla_2, tabla_3) INNER (tabla_4, tabla_5)
PreuzmiIzvorni kôd (Text)://uvijet za presjek alias tabli
ON tbl_123.var_3 = tbl45.var_3 AND tbl_123.var_6 = tbl_45.var_6
i to je to 0,07 sec a prije min 44 sec
evo sada cijeli kod skupa:
PreuzmiIzvorni kôd (Text):SELECT tbl_123.var_1, tbl_123.var_2, tbl_45.var_3, tbl_45.var_5
FROM
(
SELECT t3.var_3, t1.var_7, t2.var_6
FROM tabla_1 t1
INNER JOIN tabla_2 t2
ON t2.var_1 = t1.var_1
INNER JOIN tabla_3 t3
ON t3.var_2 = t2.var_2
WHERE t3.var_3 >= '2017-10-01'
) tbl_123
INNER JOIN
(
SELECT t4.var_3, t4.var_6, t5.var_4, t5.var_5
FROM tabla_4 t4
INNER JOIN tabla_5 t5
ON t5.var_4 = t4.var_4
WHERE t4.var_3 >= '2017-10-01'
) tbl_45
ON tbl_123.var_3 = tbl45.var_3 AND tbl_123.var_6 = tbl_45.var_6
zivot je moja domovina.
Ovaj post je ureden
1
puta. Posljednja izmjena 05.10.2017 12:01 od strane Avko.