请教一个数据结构的设计
一个千万级别用户的产品,每个用户可能有无限多个目录,每个目录下可能有无限多个子目录和文件。
用户表
users 表:
---------------------------------------
userid | folder_number | file_number
---------------------------------------
1 | 100 | 200000
---------------------------------------
folder 表:
-------------------------------------------------------------
folder_id | userid | father_id | folder_number| file_number
-------------------------------------------------------------
1 | 1 | 0 | 500 | 1000
-------------------------------------------------------------
file 表:
-------------------------------
file_id | userid | folder_id
-------------------------------
1 | 1 | 1
-------------------------------
2 | 1 | 1
-------------------------------
这里的 folder 表和 file 表都是需要哈希分布的,根据对应的 folder_id 及 file_id,例如 1千万条记录一个表,就会有很多 folder_1, folder_2 .... file_1, file_2 ... 之类的表。
问题: 如果一个用户浏览某个目录,此时需要去数据库选出所有此目录下的子目录及此目录下的所有文件,随着此目录下的子目录及文件数量越来越大,此操作非常耗时。
可能的解决办法:分页显示,如何做到在分页显示的过程中不要去全选了然后排序再limit?我想做到如果分页显示的话数据库操作只选出当前页面记录条数的信息。