2013-01-24 51 views
0

我正在尋找一些想法。我正在編寫這個有參考表的PHP應用程序。這個參考表中的數據非常靜態。我使用它來填充動態表單的選擇列表,以及在其他地方引用它。php,mysql訪問靜態參考表的最佳方式

表基本上是:

key = stored in other tables 
description = a long description of the key 

我的應用程序將被引用該表的很多。桌子有大約600排。

我在尋找關於如何最好地訪問此信息的建議。一頁可以參考它20次。

我在尋找什麼是最快和最有效的意見。

我傾向於在頁面開始時創建一個準備好的語句,然後每次傳遞新的參數並讓mysql處理緩存。

會存儲過程是任何更快,或表加載到一個會話陣列

感謝您的任何意見,建議。

感謝

+0

就我個人而言,我會等待嘗試優化,直到它成爲問題。實際上,20個簡單的密鑰查詢數據庫查詢不會花費大量時間(除非您有一個遠程數據庫,在這種情況下,您可能會從網絡流量中獲得一點滯後) –

+0

如果您正在訪問一個表頁面加載時,建議不要做數據庫讀取20次。您可以構建一次數據結構,然後訪問它。這假定數據將保持靜態。如果你願意,你也可以使用一些緩存。 – user1190992

回答

0

如前所述,如果您只需撥打電話即可離開,那麼您可以做到這一點。

如果性能是一個問題,或者你覺得它更快一些,聽起來像這張表是一個很好的緩存候選者,因爲它使用了鍵值對,很少發生變化。

查看apc或memcache。這(使用APC)的一個例子是:

function getDescription($key){ 
    $result = apc_fetch($key);//Possibly prefix with method unique prefix. 
    if($result === false) { 
     //No result stored 
     $result = getDescriptionFromDatabase($key); 
     apc_store($key, $result);//Can also add a ttl if needed 
    } 
    return $result; 
} 

這隻會抓住從數據庫結果一次(直到服務器/ PHP的復位e.t.c.)減少數據庫調用。

0

如果你真正需要的速度,說實話,你必須有流量顯著量這成爲擺在首位的問題,我建議創建程序,使表您可以在不添加WHERE參數的情況下進行調用(因此,如果頁面上有5個不同的select語句,那麼您將擁有5個不同的表)。而且由於你的數據大部分是靜態的,所以你只需要經常通過事件來運行create table程序。