我是mysql&的新手我编写了我的第一个php-mysql应用程序。
我有30个设备列表,我希望用户将他们喜欢的设备添加到他的帐户中。
所以,我创建了mysql表“A”,其中某些device-id存储在特定的userID下,如下所示
UserID | Device Id
1 | 33
1 | 21
1 | 52
2 | 12
2 | 45
3 | 22
3 | 08
1 | 5
more.....
说,我有5000个用户ID& 30个设备 - ids。
&安培;如果每个用户在其帐户记录下有15个设备ID(平均)。
然后在表“A”
下将是5000 X 15 = 75000条记录所以,我的问题,我们可以在mysql表中存储多少条记录?
我上面提到的存储记录的方法是否正确?如果添加更多用户,是否会影响查询性能?
或者有更好的方法吗?
答案 0 :(得分:3)
您不太可能使用仅有整数的两列来处理MySQL表的限制。
如果您真的关心查询性能,可以继续在两列上抛出索引。即使设备ID上有索引,插入/更新表的成本也可能微不足道。如果您的数据库变得庞大,它可以加速查询,例如“哪些用户更喜欢这个设备”。询问“此用户喜欢哪些设备”的查询也会快速显示用户索引。
我只想说这个表是一个简单的两列表,带有一个由两部分组成的复合键(索引)。通过这种方式,它将尽可能地原子化,并且不需要任何有人可能建议“提高性能”的任务。
保持原子性和正常性 - 您的表现将正常,您不会超出DBMS的任何限制
答案 1 :(得分:1)
我没有看到任何错误。如果您期待节省一些服务器空间,那么不用担心。让您的数据库执行基础作业。使用ID - int(10) primary auto increment
正确索引数据库。在需要时考虑可扩展性。您的第一个目标应该是完成您正在进行的应用程序。然后测试一下。如果你发现它造成任何滞后,问题,那么就开始担心解决问题的方法。不要打扰你可能不会面对的事情。
但考虑到你的应用规模(75k到1个lac记录),它应该不是一项任务。或者,您可以为您的用户设置这样的架构
(device_table)
device_id
23
45
56
user_id | device_id
1 | 23,45,67,45,23
2 | 45,67,23,45
即将device_ids存储在一个数组中,然后将特定用户的device_id作为
$device_for_user=explode(',',$device_id)
当然从mysql数据库中检索device_id。 所以你会有
$device_for_user[0]=23
$device_for_user[1]=45
等等。
但这种方法不是一个很好的设计或方法。但仅仅是为了您的信息,这是一种方法