我正在创建一个网站,我需要将用户的事件(类似于 stackoverflow 中的收件箱)存储在 sql 中。目前,我和我的队友正在争论最有效的方法;到目前为止,我们已经提出了两种替代方法:
- 为每个用户创建一个新表,并将表名设为 theirusername_activity。然后,当我需要获取他们的事件(发布、评论等)时,我只需获取该表并查看其中的行...
- 最后我会有TON张 table
- 可能更快
- 有一个名为 activity 的大表,其中有一个额外的字段用于用户名;当我想获取他们的事件时,我只需从该表中获取行
"...WHERE username=".$loggedInUser
- 更少的 table ,更干净
- (假设我正确地索引了表格,这还会更慢吗?)
任何替代方法也将不胜感激
最佳答案
"Create a new table for each user ... In the end I will have a TON of tables"
这绝不是使用关系数据库的好方法。
SQL 数据库可以完美地处理数百万行(甚至更多),即使是在商用硬件上也是如此。正如您已经提到的,您显然需要可用的索引来涵盖将对该表执行的所有可能查询。
关于php - SQL : many Many MANY tables vs one huge table? 哪个更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725799/