2010-05-13 140 views
0

我在单个数据库中有多个表。当我的页面加载时,它从这个数据库中的所有表中检索数据。由于这个原因,由于不同表格中的加载时间不同,我的页面变得越来越慢。我的问题是我如何显示页面的数据已经从表中加载,其余的是在流模式?我不知道用php和MySQL是否可行?有任何想法吗?如何控制从数据库中的表中检索数据

感谢

马修

回答

0

没有什么从不同的表中获取数据坏。每个网站都这样做。
如果您的某些查询变慢,您只需找出哪一个,然后对其进行优化即可。

你可以找到与这个简单的代码查询速度慢: 只是把这些$ TIMER语句每个查询执行之前和之后

<? 
$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

感谢您的答复。我会检查哪一个变慢......但是我的另一个问题是每个表都有它的更新日期。因此对于一个查询,某个表可以获得即时数据,而其他表则可以从网页更新。所以这些差异将会在那里。这就是为什么要求为正在更新过程中的表的延迟加载数据。 – mathew 2010-05-13 11:55:11

+0

@mathew如果某些插入操作会减慢数据库的速度,那么还必须优化这些更新查询。虽然“从网络更新数据库”听起来很奇怪 – 2010-05-13 12:02:08

+0

好吧,对于优化表来获得大型数据库的结果似乎很困难。你有任何链接或任何教程,我可以做一些学习曲线?或任何帮助表示赞赏 – mathew 2010-05-13 12:12:27