SQL效率更多表或更多行

时间:2015-03-11 03:43:25

标签: mysql

假设我有照片管理数据库,目前有100个用户注册,每个用户有10000张照片绑定到他们的user_id。每个用户只能访问自己的照片。

每个用户拥有100张表(其中user_id作为表名)是否更有效率,每张用户拥有10,000张照片包含所有1,000,000张照片的单张表 OR 与数据库性能有关的方式没有任何差异吗?

在这两种情况下,数字将继续增加(即更多用户或更多照片)

编辑:我目前正在使用MySQL来构建数据库,并且最初考虑将链接存储到最有可能存储在单个文件夹中的图像。我想我已经对如何处理这个问题有了更好的了解!感谢您的回复!

1 个答案:

答案 0 :(得分:2)

对于多对一关系,您可能只需要两个表。包含用户ID的表(广告可能是其他用户信息),包含照片和用户ID的表(外键键入用户表)。

这样的事情: 用户表

UserID  Name  DateJoined  etc.
1       Dan   2015-01-01  ...
2       Jim   2015-02-01  ...

照片表(您可以将实际照片存储在表格中,如果您打算在SQL Server上使用FILESTREAM;我认为我不会在MySQL上推荐它)

PhotoID  UserID PhotoPath        PhotoTitle
1        1      '/img/asdf.jpg'  'My favorite'
2        2      '/img/asdf2.jpg' 'First!'
3        1      '/img/asdf3.gif' 'Animated favorite'

您的ImagePath必须是唯一生成的(使用GUID / UUID作为文件名,将所有用户的照片存储在特定目录中,或者沿着这些行存储)。

如果您真的只想存储照片并将其与用户关联,您可能需要考虑NoSQL / Document数据库。