2010-03-15 274 views
1

我是全新的PHP & MySQL,我創建的一個函數需要訪問大型表或數據庫。我創建了數據庫,它目前在MySQL表中,我正在訪問沒有問題。該表的長度爲11,000行,有8列(所有文本長度不超過8個字符) - 它是靜態的,並且永遠不會改變。沒有特別的要求,我的用戶會點擊一個按鈕,觸發腳本訪問數據,比如500次或更多。所以一般情況下,將所有這些數據都包含在我的腳本中的一個大的「switch」或「if ... then」有條件的權限中,而不是打開和訪問數據庫連接數百甚至數千次?看起來這可能是等待發生的瓶頸。謝謝!初學者PHP/mySQL問題

+0

聽起來像是你需要爲自己測試的東西嗎?爲了便於維護,我會親自使用數據庫。 – Dolph 2010-03-15 14:38:49

+0

我同意Dolph! :D – Shrayas 2010-03-15 14:51:07

+0

我已經有了數據庫的工作,並將它的性能與數組進行比較。感謝您的建議。 – 2010-03-16 11:22:42

回答

1

在你的情況下,我會保留數據庫,但在腳本開始時將整個內容加載到內存(數組)中。如果你想稍後優化,你可以使用一個非常簡單的延遲加載方案,根據請求讀取一批數據。也許有關於可能請求哪些行的提示。但保持簡單!

+0

簡單...很像我自己!謝謝你的提示。 – 2010-03-16 11:25:57

+0

沒有汗水。請投票贊成有用的答案,並選擇其中一個作爲「答案」。另外,編輯標題以總結問題,以便其他人可以找到它。 – Martin 2010-03-16 14:18:36

1

在閱讀你的問題時,似乎可能有很多空間用於計算改進。應用程序必須在如此龐大的一組數據上做了很多次的事情是非常罕見的。

但是,有一點需要注意的是,具有11,000行的數據庫實際上相當小。你的數據的總和應該是相當不重要的(3字節[最大] * 8個字符* 8字段* 11,000行=〜2 MB)。考慮在程序運行之前將數據庫預加載到內存中,並使用該數據庫而不是直接訪問數據庫。它應該以這種方式運行得更快。

+0

訪問數據看起來好像很多次,但它是地圖對象的一個​​大型查找表 - 查看給定對象的北,南,東,西特定對象的名稱。我會嘗試你所說的將它加載到內存中。謝謝! – 2010-03-16 11:20:43

2

更好地消除500次訪問。你爲什麼需要它?通常我們使用一個數據庫來進行任何計算,只需一個查詢

+0

爲真。我建議這個。 – Shrayas 2010-03-15 14:51:34