0
我在單個數據庫中有多個表。當我的頁面加載時,它從這個數據庫中的所有表中檢索數據。由於這個原因,由於不同表格中的加載時間不同,我的頁面變得越來越慢。我的問題是我如何顯示頁面的數據已經從表中加載,其餘的是在流模式?我不知道用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><>";
}
?>
感謝您的答覆。我會檢查哪一個變慢......但是我的另一個問題是每個表都有它的更新日期。因此對於一個查詢,某個表可以獲得即時數據,而其他表則可以從網頁更新。所以這些差異將會在那裏。這就是爲什麼要求爲正在更新過程中的表的延遲加載數據。 – mathew 2010-05-13 11:55:11
@mathew如果某些插入操作會減慢數據庫的速度,那麼還必須優化這些更新查詢。雖然「從網絡更新數據庫」聽起來很奇怪 – 2010-05-13 12:02:08
好吧,對於優化表來獲得大型數據庫的結果似乎很困難。你有任何鏈接或任何教程,我可以做一些學習曲線?或任何幫助表示讚賞 – mathew 2010-05-13 12:12:27