2012-07-11 101 views
0

我正在使用一個jQuery腳本來分頁和搜索數據。它的工作原理和功能與它應有的一樣。什麼是使用PHP填充表格的最有效方式?

我正在用包含1000多條記錄的數據填充表,我目前使用PHP while語句來填充它。

table代碼,我有這樣的說法,我首先執行查詢來獲取數據,$article = mysql_query("SELECT * FROM articles ORDER BY published DESC");

然後我用while語句來填充 - while($articles = mysql_fetch_array($article)) {

儘管這樣做工作,該頁面加載時間太差,需要很長時間才能加載。顯然這不是最有效的填充方式。有沒有一種「更容易」和有效的方式來做到這一點?

+0

既然你是分頁,你不能一次只返回一頁數據嗎? [PHP Link](http://www.plus2net.com/php_tutorial/php_paging.php) – 2012-07-11 13:35:42

+4

查詢時間可能是您的瓶頸。在「已發佈」列上添加一個索引以加快排序。 – 2012-07-11 13:35:58

+2

使用'limit'並且只返回可見的行 - 或者你的分頁是如何工作的...在你的'where'和'order'列上索引也是必須的 – ManseUK 2012-07-11 13:36:57

回答

1

您可以將您的數據類型更改爲更小,以便儘可能減少下載量。

您可能通過選擇*而不是您需要的特定表格來下載大量的多餘數據。

您還可以使用極限X1限制條數/結果你(你可能並不真正需要1000上的網頁嗎?..)

除此之外,沒有太多您可以加快速度,因爲從數據庫下載所花費的時間需要花費很長時間,而不是PHP腳本的效率。

0

(MySQL的)+ OFFSET(PHP)分頁+(MySQL的)優化(如索引鍵...)

1

你顯示一個頁面上的所有1000條或者你通過套使用jQuery頁面比如說,每次50個?

如果你正在做後者,爲什麼你會獲得所有1000條記錄?相反,你可以改變你的sql到這樣的:

$startRecord = N // set to some value, initially 0 
$numRecords = 50; 

$query = "SELECT * FROM articles ORDER BY published DESC limit $startRecord, $numRecords"; 
$result = mysql_query($query); 

這將得到前50個記錄。修改$ startRecord var以獲取數據集中的其他記錄。

+0

+1 yep ...總之,使用'$ startRecord' w /頁碼很好想法加快整個過程,如'$ startRecord =($ pagenum-1)* $ numRecords;'(本例)。 – Wh1T3h4Ck5 2012-07-11 13:48:12

+0

我將如何去實施這個?如果我使用jQuery進行分頁,它仍然獲取記錄,然後對數據進行排序。如果我將當前的sql調整爲上面的內容,是不是會限制前50條記錄(例如),然後如何篩選到下一個50條記錄等等。 – 2012-07-11 19:41:26

相關問題