mysql表行数限制?

问题描述:

我是新来的mysql &我编写了我的第一个php-mysql应用程序。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设备的IDS。

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

那么这将是表下5000×15 = 75000的记录“A”

所以,我的问题,有没有对我们有多少记录可以存储到MySQL表中的任何限制?

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

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

+0

“千百万”的任何限制。如果您真的好奇,请阅读文档*(http://dev.mysql.com/doc/refman/5.0/en/limits.html)。 – 2013-02-16 07:00:14

+0

RTLM:http://dev.mysql.com/doc/refman/5.6/en/table-size-limit.html – 2013-02-16 07:01:35

+0

@YogeshSuthar:如果只有评论可以-1。愚蠢的想法。对这样的表进行非规范化并不是一个好主意。 – 2013-02-16 07:02:52

这是不太可能的,你会接近两列只有整数的MySQL表的限制。

如果你真的关心查询性能,你可以继续前进,并在两列上引发索引。即使使用设备ID索引,插入/更新表格的成本很可能可以忽略不计。如果你的数据库变得庞大,它可以加快诸如“哪些用户更喜欢这个设备”的查询。您询问“此用户更喜欢什么设备”的用户索引也会很快。

我只是想说这个表是一个简单的两列表和一个两部分组合键(索引)。这样,它将尽可能地原子化,并且不需要某些人可能会建议的“提高性能”的任何有趣的动作。

保持它的原子和正常的 - 你的表现会罚款,你不会超过你的DBMS

我没有看到任何错误。如果您期待节省一些服务器空间,那么请不要担心。让你的数据库完成潜在的工作。用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) 

凡课程device_id从MySQL数据库中检索。 所以你将有

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

amd等。

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

+0

-1,以便进行反规范化并防止db以其想要的方式工作。 – 2013-02-16 07:27:37