嘿我正在构建使用mysql的应用程序。我将用户数据存储在用户表中,并将数据分组到表组中。预测用户总数略高于100
我想知道是否有任何缺点或者是构建如下所述的这种结构的优选方法。我正在使用php来管理mysql数据。
现在我有两张桌子:
in_group
--------
id, user_id, group_id
---------------------
1, 1, 1
2, 35, 1
3, 35, 32
4, 35, 41
这是一个好方法还是应该将其分成更多的表格,如
import timeit
import random
def del_dict_items(x):
# Insert the index
random_index = random.randrange(len(x) - 1)
try:
del x[random_index]
except KeyError:
x.setdefault(random_index, None)
del x[random_index]
print("i\t\tlist_del_time\t\tdict_del_time")
for i in range(10000, 100001, 1000):
t_list = timeit.Timer("del x[random.randrange(len(x)-1)]", "from __main__ import random, x")
t_dict = timeit.Timer("del_dict_items(x)", "from __main__ import random, x, del_dict_items")
x = list(range(i))
list_del_time = t_list.timeit(number=1000)
x = {j:None for j in range(i)}
dict_del_time = t_dict.timeit(number=1000)
print("%d %10.3f %20.3f" %(i, list_del_time, dict_del_time))
答案 0 :(得分:1)
最好使用单独的in_group
表。这样可以轻松选择组中的所有"用户" (目前很难)as"用户组#34; (目前很容易),甚至为用户提供的轻松"组"查询,现在你需要单独解析它,并使用一个单独的表,你只需读取结果的行。
如果您同时进行多项更新,还有另一个优势。现在任何更新都将替换用户的整个组。通过分离表,您可以从用户添加或删除组,而不会对用户的其他组产生任何影响。还有其他方法可以解决这个潜在的问题,但是单独的表使得处理起来非常简单。