我是MySQL新手.我正在尝试设计一个在线文件存储系统.实际的文件存储将分别处理 - 我只想使用MySQL来创建文件元数据的数据库(例如文件名,文件大小,文件类型,权限等).我的系统需要处理多达1000个用户,每个用户最多可以存储1000个文件.
我想创建一个文件记录数据库.最好是为每个用户创建一个文件记录表,然后创建另一个列出用户和引用相应表的表吗?或者我应该制作一个大的文件记录表,然后简单地包含一个名为"user"的列?
我想多表方法的优点是我永远不必逐步完成1,000,000条记录.但是我对mySQL了解不多,所以我不知道1,000,000条记录是否有很多工作要做.
我会在一个表中找到所有文件记录.对于MySQL来说,100万条记录并不是那么重要 - 我使用的记录比没有任何问题的记录多100倍.
只需确保您的索引是好的.还要考虑使用InnoDB引擎而不是MyISAM,尽管在使用InnoDB时损失的性能与获得行级锁定的好处之间存在折衷.
一个表与多个表的优点是要进行单个 SQL查询,例如:
什么是系统中所有文件的总大小:
SELECT SUM(size) FROM files
按文件大小(或计数)显示前N个用户:
SELECT user, SUM(size) AS total FROM files GROUP BY user ORDER BY total DESC LIMIT 10
告诉我最后N个修改过的文件:
SELECT * FROM files ORDER BY mtime DESC LIMIT 10
如果每个用户都有一个单独的表,那么所有这些都无法有效实施.
你应该创建一个大的文件记录表,并简单地包含一个名为"user"的列.您不创建存储完全相同信息的单独表.
编辑: 您应该创建一个包含存储对用户的引用的列的大表.有人建议userid是一个合适的名字,但你可以随意调用它.实际的用户信息需要在一个单独的表中(通过此键链接).