2010-05-13 6 views
0

J'ai plusieurs tables dans une base de données unique. Lorsque ma page se charge, elle récupère les données de toutes les tables de cette base de données. à cause de cela ma page devient lente en raison du temps de chargement différent dans différentes tables. Ma question est comment puis-je afficher la page avec des données qui est déjà chargé à partir des tables et reste est dans un mode de streaming ?? Je ne sais pas si c'est possible avec PHP et MySQL? des idées?Comment contrôler la récupération de données à partir de tables dans une base de données

Merci

Mathew

Répondre

0

Il n'y a rien de mal à obtenir des données des différentes tables. Chaque site le fait.
Si certaines de vos requêtes sont lentes, il vous suffit de savoir laquelle, puis de l'optimiser.

Vous pouvez trouver les requêtes lentes avec ce code simple: vient de mettre ces déclarations de minuterie $ avant et après chaque exécution de la requête

<? 
$TIMER['start']=microtime(TRUE); 
// some code 
$query="SELECT ..."; 
$TIMER['before q1']=microtime(TRUE); 
    $res=mysql_query($query); 
$TIMER['after q1']=microtime(TRUE); 
    while ($row = mysql_fetch_array($res)) { 
// some code 
    } 
$TIMER['before q2']=microtime(TRUE); 
    $res=mysql_query($query); 
$TIMER['after q2']=microtime(TRUE); 
    while ($row = mysql_fetch_array($res)) { 
// some code 
    } 
$TIMER['array filled']=microtime(TRUE); 
// some code 
$TIMER['pagination']=microtime(TRUE); 

if ('127.0.0.1' === $_SERVER['REMOTE_ADDR']) { //put your IP addr here 
    echo "<table border=1><tr><td>name</td><td>so far</td><td>delta</td><td>per cent</td></tr>"; 
    reset($TIMER); 
    $start=$prev=current($TIMER); 
    $total=end($TIMER)-$start; 
    foreach($TIMER as $name => $value) { 
    $sofar=round($value-$start,3); 
    $delta=round($value-$prev,3); 
    $percent=round($delta/$total*100); 
    echo "<tr><td>$name</td><td>$sofar</td><td>$delta</td><td>$percent</td></tr>"; 
    $prev=$value; 
    } 
    echo "</table><>"; 
} 
?> 
+0

Merci pour votre réponse. Je vais vérifier lequel devient lent ... mais mon autre problème est que chaque table a sa date de mise à jour. Ainsi, pour une requête, certaines tables ont des données instantanées tandis que d'autres sont mises à jour depuis le Web. donc ces différences vont être là. C'est pourquoi demandé de retarder le chargement des données pour les tables qui sont en cours de mise à jour. – mathew

+0

@mathew Si certaines opérations d'insertion ralentissent votre base de données, vous devez également optimiser ces requêtes de mise à jour. bien que "mettre à jour la base de données à partir du web" semble bizarre –

+0

bien il me semble très difficile d'optimiser la table pour obtenir des résultats de grande base de données. avez-vous un lien ou des tutoriels que je peux faire une courbe d'apprentissage ?? ou toute aide appréciée – mathew

Questions connexes