情况:我试图创建一个页面,其中包含允许查看其内容的成员,并且每个成员都由ID定义。要访问页面的信息,我想确保用户是该页面的成员。
问题:是否更快地拥有一条必须遍历的大型记录来查找ID或创建一个索引具有多个(数十亿)记录但却非常小的字段?
答案 0 :(得分:0)
像MySQL这样的Rdms服务器经过优化,可以从众多短记录中查找。如果您按照这种方式构建数据并正确编制索引,那么您将获得不错的性能。
另一方面,需要线性搜索的长数据列表不能很好地扩展。
顺便说一句,计划数以千万计的记录,而不是数十亿。如果您确实需要处理数十亿美元,那么您可能拥有扩展系统的资源。与此同时,RAM和磁盘存储仍处于摩尔定律成本曲线上,即使CPU不是。
答案 1 :(得分:0)
这种情况通常会用三个表来实现。简化版本看起来像这样:
users(id, name, password, ... )
pages(id, title, .... )
page_access(user_id, page_id, permission)
其中user_id
和page_id
分别是对users
和pages
表的引用。在您的应用程序中,您将根据page_access
表检查当前页面和用户,以查看是否应授予或拒绝权限。