4

我是 mysql 新手,我已经编写了我的第一个 php-mysql 应用程序。

我有 30 个设备列表,我希望用户从中将他们喜欢的设备添加到他的帐户中。

所以,我创建了 mysql 表“A”,其中一些设备 ID 存储在特定的用户 ID 下,像这样

UserID  |  Device Id

1       |  33
1       |  21
1       |  52
2       |  12
2       |  45
3       |  22
3       |  08
1       |  5 
more.....

比如说,我有 5000 个用户 ID 和 30 个设备 ID。

& 如果每个用户在他的帐户记录下有 15 个设备 ID(平均)。

那么表“A”下将有 5000 X 15 = 75000 条记录

所以,我的问题是,我们可以将多少条记录存储到 mysql 表中是否有任何限制?

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

或者有没有更好的方法来做到这一点?

4

2 回答 2

3

您不太可能接近具有两列仅是整数的 MySQL 表的限制。

如果您真的关心查询性能,您可以继续在两列上都添加索引。即使设备 ID 上有索引,插入/更新表的成本也可能可以忽略不计。如果您的数据库变得庞大,它可以加快诸如“哪些用户更喜欢此设备”之类的查询。您询问“此用户喜欢什么设备”的查询也将很快通过用户索引。

我只想说使这个表成为一个简单的两列表,并带有一个由两部分组成的复合键(索引)。这样,它将尽可能地原子化,并且不需要某些人可能建议“提高性能”的任何愚蠢行为。

保持原子性和正常性——您的性能会很好,并且不会超出 DBMS 的任何限制

于 2013-02-16T07:17:30.570 回答
1

我看不出有什么不妥。如果您希望节省一些服务器空间,请不要担心。让您的数据库完成底层工作。使用ID - int(10) primary auto increment. 在需要时考虑可扩展性。您的第一个目标应该是完成您正在制作的应用程序。然后测试它。如果您发现它导致了任何滞后,问题,然后开始担心解决问题的事情。不要为那些你可能根本不会面对的事情烦恼。

但是考虑到您的应用程序的规模(75k 到 1 lac 记录),这应该不是一项艰巨的任务。或者,您可以为您的用户提供这样的架构

(设备表)

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)

当然 device_id 是从 mysql 数据库中检索到的。所以你会有

$device_for_user[0]=23
$device_for_user[1]=45

amd 等等。

但是这种方法不是一个很好的设计或方法。但仅供参考,这是一种方法

于 2013-02-16T07:10:39.747 回答