【发布时间】:2010-05-13 10:56:58
【问题描述】:
我在单个数据库中有多个表。当我的页面加载时,它会从该数据库中的所有表中检索数据。因此,由于不同表中的加载时间不同,我的页面变慢了。我的问题是如何显示已经从表中加载的数据的页面,而其余部分处于流模式?不知道 php 和 MySQL 是否可行?有什么想法吗?
谢谢
马修
【问题讨论】:
我在单个数据库中有多个表。当我的页面加载时,它会从该数据库中的所有表中检索数据。因此,由于不同表中的加载时间不同,我的页面变慢了。我的问题是如何显示已经从表中加载的数据的页面,而其余部分处于流模式?不知道 php 和 MySQL 是否可行?有什么想法吗?
谢谢
马修
【问题讨论】:
从不同的表中获取数据并没有什么不好。每个网站都这样做。
如果您的某些查询变慢,您只需要找出哪个查询然后优化它。
您可以使用以下简单代码找出慢速查询: 只需在每次查询执行之前和之后放置这些 $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><>";
}
?>
【讨论】: