2013-03-25 153 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 
------------------------ 

然后你就可以在你的应用程序处理它们