Newsgroup: it.comp.www.php
Titolo: Quale metodo per una Query veloce?

Salve a tutti.
Penso capiti a tutti di effettuare delle query su un db MySQL tramite una
pagina in PHP. Ebbene quale metodo fornisce una velocità di risposta
maggiore in termini di visualizzazione dei risultati?
- mysql_fetch_row()
- mysql_fetch_array()
Come mai una stessa query (impegnativa per il db) se incollata nella
finestra SQL di phpmyadmin risulta velocissima, mentre con una chiamata da
uno script PHP può richiedere qualche secondo?
grazie
helios

 chiamata da uno script PHP pur richiedere qualche secondo?
Se e' una query di selezioni normalmente phpMyAdmin inserisce un LIMIT
0,30 in automatico.
-- 
I am what I am, I do what I can
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y
L'uomo, conscio di sbagliare, persevera.

Eppure nel libro che definisco BIBBIA: "Sviluppare applicazioni per database
con MySQL/PHP" si consiglia di non usare mysql_fetch_row() a favore del
secondo.
Cmq č plausibile che una query generi circa 200 risultati (messi in tabella
con un ciclo while) in un tempo di risposta di 20 secondi su CPU P3 800 e
256 Mb Ram?  Mi sembra tantino dato che la query (SELECT * FROM 'tabella'
WHERE IDCampo='$IDPippo') si svolge su una simgola tabella.
Ho dovuto alzare il max_execution_time a 100 secondi per evitare di perdermi
qualcosa. In compenso sto approntando un nuovo pc.
grazie
helios
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:3dJ5c.72118$Kc3.2...@twister2.libero.it...


 tabella.
Mi sembra strano, poi dipende molto da cosa c'e' di altro nel DB, dal
carico della CPU etc.
Prova a postare il codice.
Saluti.


Il codice penso sia un classico:
$result=mysql("$DBName","SELECT * FROM lavorazione WHERE
Giornolavorazione='$Dy' AND Meselavorazione='$Mn' AND Annolavorazione='$Yr'
");
while ($row  =  mysql_fetch_row($result)) {
$LID=$row[0];
$LOI=$row[1];
$LII=$row[2];
..................
$LISKU=$row[24];
$LMATE=$row[25];
echo "<tr><td align='center'>$LID</td><td
align='left'>$LIN</td>........</tr>
}
grazie
helios
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:1rJ5c.72158$Kc3.2...@twister2.libero.it...


 - mysql_fetch_array()
[quoto dal manuale]
An important thing to note is that using mysql_fetch_array() is not
significantly slower than using mysql_fetch_row(), while it provides a
significant added value.
[/quoto]


 }
ovviamente hai bisogno di tutte quelle variabili, vero?
altrimenti ti converrebbe mettere nel corpo direttamente
echo"<tr>";
for ($i=0, $i<26;$i++) {
echo "<td align='center'>".$row[$i]."</td>"}
echo"</tr>";
per ogni record fai 26 assegnamenti e poi scrivi le 26 righe della 
tabella.... ad ogni record successivo riassegni alle variabili i nuovi 
valori quindi perdi i vecchi, perché lo fai?
Ciao Gianfranzo
-- 
ICQ#: 21258924 Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo è contro la guerra
"dopo tutto, gli angeli non sono altro che dei volatili" D. Pennac

 ha scritto nel messaggio
news:c39c97$249mj3$1...@ID-201944.news.uni-berlin.de...


 tempi di esecuzione della query.
secondo me non è lì il problema... vale a dire non è il temop di 
esecuzione della query, ma il modo in cui prepari la tablella di 
visualizzazione.
  se estrai 26 campi alla volta e ci sono 1000 record ottieni 26000 
assegnamenti a variabili, non sono moltissime, ma moltiplica per il 
numero di eventuali utenti che faranno la stessa operazione e metti in 
giniocchio il webserver senza alcun apparente motivo.
Insisto che se non ti servono le variabili, come si legge dal tuo 
codice, adottando la soluzione che ti ho proposto il tutto sarà 
decisamente più efficiente.
