mysql表行限制?

时间:2013-02-16 06:56:37

标签: php mysql

我是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表中存储多少条记录?

我上面提到的存储记录的方法是否正确?如果添加更多用户,是否会影响查询性能?

或者有更好的方法吗?

2 个答案:

答案 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
等等。

但这种方法不是一个很好的设计或方法。但仅仅是为了您的信息,这是一种方法