获取大量数据的最佳方式

时间:2013-03-25 14:30:09

标签: mysql database wordpress

首先让我来描述一下我的情况:

我需要存储每个用户大约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个数据?

1 个答案:

答案 0 :(得分:2)

您不需要200个查询来获取200个值!

例如,如果在1页中,您需要获取3个具有键“my_data_1”,“my_data_2”和“my_data_3”的字段,则可以使用“OR”在单个sql查询中获取所有字段条件。

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';

这将在单个查询中返回单个结果表中的所有ur值:

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

然后您可以在应用程序中处理它们