Ajutor optimizare interogare [rezolvat]

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Ajutor optimizare interogare [rezolvat]

Mesajde Birkoff » Joi Iun 23, 2011 12:04 am

Se da situatia urmatoare:

$bucati[$row['id_user']] = $row['nr_bucati'];
(poate fi 1 user cu X bucati sau pot fi mai multi fiecare cu bucati diferite)

Se cere sa se extraga din baza de date din tabelul anunturi pentru
fiecare id_user anunturile acelui user dar nu mai mult de nr_bucati existente la fiecare (chiar daca id_user are mai multe)

Se poate face asta dintr-o singura interogare sau trebuie o bucla cu select separat pe fiecare?
Cum e mai optim - o singura interogare sau bucla cu select separat?

In cel mai rau caz se va face cache la tot si se va citi informatiile din cache.
Ultima oară modificat Vin Iul 01, 2011 8:48 pm de către Birkoff, modificat 1 dată în total.


1) )
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Joi Iun 23, 2011 10:58 am

un singur query e mai bun, de cele mai multe ori (atunci cand e posibil). Are MySql grija de cache inside

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Joi Iun 23, 2011 11:16 am

ok si ai idee cum sa compun sintaxa? ca nu stiu cum sa fac ca sa extrag pentru fiecare userid numarul specificat de anunturi (nr_bucati)

deci mie pentru urmatoarele valori din array
$bucati[1] = 5;
$bucati[2] = 2;
$bucati[3] = 1;
ar trebui selectul sa imi returneze 5 anunturi care apartin id-ului 1, 2 care apartin id-ului 2 si 1 care apartin id-ului 3

nu am idee cum sa fac limitarea asta la select dintr-o sintura interogare...
1) )
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
matheuzzy
Senior Member
Mesaje: 383
Membru din: Dum Apr 26, 2009 4:42 pm
Localitate: Bucuresti

Mesajde matheuzzy » Joi Iun 23, 2011 11:46 am

singura solutie cred ca este un union din toate sql-urile mici


select * from (
select * from table where user_id = $user_id order by col limit 0,$nr_bucati_user
union
select * from table where user_id = $user_id order by col limit 0,$nr_bucati_user
union
select * from table where user_id = $user_id order by col limit 0,$nr_bucati_user
...

) as tb

si query-urile "mici" din union generate din php pe baza array-ului
si neaparat index pe user_id

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Joi Iun 23, 2011 12:00 pm

ms de idee, o sa ma joc diseara sa vad ce iese, daca nu merge revin...
1) )
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
EmanuelSerban
New Member
Mesaje: 4
Membru din: Mar Apr 26, 2011 2:22 pm

Mesajde EmanuelSerban » Joi Iun 23, 2011 4:01 pm


Avatar utilizator
sasha
Average Member
Mesaje: 112
Membru din: Vin Iul 01, 2005 11:08 am
Localitate: Timisoara
Contact:

Mesajde sasha » Joi Iun 23, 2011 9:31 pm

Ieri noapte am baut cu rusii... Era sa mor.
Azi dimineata m-am trezit... Mai bine muream ieri!



Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Vin Iul 01, 2011 8:42 pm

1) )
2)
3) (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 3 vizitatori