如何在mysql中存储+4000个用户首选项

时间:2013-12-18 19:33:45

标签: php mysql

我真的不知道如何设置这个DB。

我有一个10k用户的列表。

每个人都需要拥有+4000个布尔数据。

我很困惑我应该如何存储这些因为我需要在php中拆分它们并经常在页面中使用它们。

感谢。

3 个答案:

答案 0 :(得分:1)

您可以serialize数据并将其存储在SQL中的TEXT中,然后unserialize数据并将其存储在$_SESSION

答案 1 :(得分:0)

最简单的解决方案(但不是最好的解决方案)是将它们存储为长字符串(varchar / text类型),其中每个符号对应一些布尔值,所以你会有类似'010101010101010'的东西,注意 - 你应该使用带有ascii编码的二进制字符

因此您可以使用$string[$someIndex]

这些数据

另一种方法:将其存储为长位掩码 - 这将减少8倍的内存量(blob类型)

第3种变体:将它们存储在id_user, id_preference, bitvalue这样的表中,每行 - 一个用户的首选项

第4种变体:重新考虑您的应用程序 - 每个用户的4000多个偏好中没有任何意义:)

答案 2 :(得分:0)

create table user_prefs(   user_id int,   prefs varchar(4000));

每个字符都是一个首选项。

在php(或类似的东西,使用MDB2):

    $res = $db->query("select * from user_prefs where user_id=$user_id");
    $row = $res->fetchRow();
    $user_prefs = $row[1];
    //now your $user_prefs[i] is the ith preference.