首先让我描述一下我的情况:
我需要为每个用户存储大约 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 然后使用来自需要 50 或 100 个数据的 SESSION 的数据?