2013-03-25 57 views
0

首先讓我描述我的情況:獲取大量數據的最佳途徑

我需要存儲每個用戶的大約200個附加細節。我正在使用wordpress。現在有一個默認功能來保存與用戶關聯的數據。但我不知道我應該使用什麼。在我的情況下,我將需要在1頁的一些數據。例如,我需要一頁中的20個數據和另一個頁面中的100個數據。用戶可能一次需要20個數據,或者一次需要100個數據。

我沒有設計我的數據庫表。瞭解了我設計它的最佳查詢方式之後。要獲得200個數據(字段)的用戶如果可以做200搜索查詢,那麼我會用戶wordpress默認元表。結構如下。

---------------------------------------------- 
| umeta_id | user_id | meta_key | meta_value | 
---------------------------------------------- 

從上面的結構中你可以看到wordpress將單個用戶的每個數據保存爲一行。所以在這種情況下,一個用戶的200個數據wordpress會節省200行。爲了檢索數據,我必須做200個查詢。

現在,如果最好通過單個查詢獲取用戶的所有數據並將其保存在會話中,那麼我將創建自己的表。結構如下。

--------------------------------------------------------------- 
| User_ID | User_detail_1 | User_detail_2 | User_detail_3 | ... 
--------------------------------------------------------------- 

在上述結構中可以保存在一排所有的200個數據,並可以得到所有在一個查詢,然後在需要的地方,當保存到會話和用戶。

現在在我的網站我不需要在一個頁面中的所有數據。在一頁上,我可能需要100個數據,而在另一個頁面中,我可能需要50個數據。所以考慮我的情況,我應該保存每行數據爲一行(使用wordpress元表),然後做100個查詢頁面,我需要100個數據,並做50個查詢,我需要50個數據?

或者我應該使用一個查詢並獲取所有數據,保存在SESSION中,然後使用SESSION中需要50或100個數據的數據?

回答

2

您不需要200次查詢就可以獲取200個值!例如,如果在1頁中,需要獲取具有鍵「my_data_1」,「my_data_2」和「my_data_3」的3個字段,則可以在單個SQL查詢中使用「OR」條件。

SELECT meta_key, meta_value from TABLE_NAME where meta_key='my_data_1' OR 
meta_key='my_data_2' OR meta_key='my_data_3'; 

這將返回所有烏爾值在一個單一的結果表在單個查詢:

------------------------ 
meta_key | meta_value | 
------------------------ 
my_data_1 | my_value_1 
------------------------ 
my_data_2 | my_value_2 
------------------------ 
my_data_3 | my_value_3 
------------------------ 

然後你就可以在你的應用程序處理它們