Autor | Zpráva | ||
---|---|---|---|
IdemeNaHavaj Profil |
#1 · Zasláno: 20. 7. 2013, 20:25:02
Ako sa dá okrem nastavenia indexu zrýchliť načítanie DB?Vyberám niekolko desiatok tisíc riadkov z mysql cez PHP a trvá to dlho, tak sa pýtam.
|
||
Joker Profil |
#2 · Zasláno: 20. 7. 2013, 20:32:05
IdemeNaHavaj:
Optimalizací výběrového SQL dotazu. |
||
IdemeNaHavaj Profil |
#3 · Zasláno: 20. 7. 2013, 20:44:59
Zabudol som napisat mam 2 tabulky
prva tabulka ma 30 tisic zaznamov a druha 60 tisic. Nacitavam to nejako takto: $query = mysql_query("SELECT * FROM `ovocie` WHERE `novinka` = 'FALSE'"); while($result = mysql_fetch_object($query)){ . . . $pr_query = mysql_query("SELECT `meno` FROM `zasielky` WHERE ..."); ... } to meno je index. Ten druhý query sa vykonáva asi zbytočne tisíc krát si myslím, takže poraďte ako by sa to dalo spojiť. googlené príklady mi nejdu. |
||
Joker Profil |
#4 · Zasláno: 20. 7. 2013, 20:53:02
IdemeNaHavaj:
„Ten druhý query sa vykonáva asi zbytočne tisíc krát si myslím, takže poraďte ako by sa to dalo spojiť.“ Ano, to je docela možné, ale těžko s tím můžeme nějak poradit, když nevíme, co se vlastně má vybrat (možná by pomohla právě ta vynechaná WHERE podmínka). V jakém vztahu je ten druhý SELECT k tomu prvnímu? |
||
IdemeNaHavaj Profil |
#5 · Zasláno: 20. 7. 2013, 21:37:30
Joker:
Z toho prvého sa načíta kód ovocia CODE while($result = mysql_fetch_object($query)){ $code = $result->CODE; A v tom druhom sa pomocou tej načítanej zisťujú podrobnosti $pr_query = mysql_query("SELECT `meno` FROM `zasielky` WHERE KOD = '$code'"); |
||
Joker Profil |
#6 · Zasláno: 20. 7. 2013, 21:42:42
Aha, takže
SELECT o.*, z.meno FROM ovocie o JOIN zasielky z ON z.kod = o.code WHERE novinka = 'FALSE' Poznámka, sloupec novinka je řetězec? Předpokládám, že má jen dvě možné hodnoty (ano/ne), tak k tomu není moc důvod. |
||
IdemeNaHavaj Profil |
#7 · Zasláno: 20. 7. 2013, 21:58:23
To je úžasné ide to 100x rýchlejšie!
Ano novinka je FALSE/TRUE |
||
Časová prodleva: 11 let
|
0