什么是通过记录或大型字段更快的遍历?

时间:2015-04-16 23:59:34

标签: mysql database

情况:我试图创建一个页面,其中包含允许查看其内容的成员,并且每个成员都由ID定义。要访问页面的信息,我想确保用户是该页面的成员。

问题:是否更快地拥有一条必须遍历的大型记录来查找ID或创建一个索引具有多个(数十亿)记录但却非常小的字段?

2 个答案:

答案 0 :(得分:0)

像MySQL这样的Rdms服务器经过优化,可以从众多短记录中查找。如果您按照这种方式构建数据并正确编制索引,那么您将获得不错的性能。

另一方面,需要线性搜索的长数据列表不能很好地扩展。

顺便说一句,计划数以千万计的记录,而不是数十亿。如果您确实需要处理数十亿美元,那么您可能拥有扩展系统的资源。与此同时,RAM和磁盘存储仍处于摩尔定律成本曲线上,即使CPU不是。

答案 1 :(得分:0)

这种情况通常会用三个表来实现。简化版本看起来像这样:

users(id, name, password, ... )
pages(id, title, .... )
page_access(user_id, page_id, permission)

其中user_idpage_id分别是对userspages表的引用。在您的应用程序中,您将根据page_access表检查当前页面和用户,以查看是否应授予或拒绝权限。

只要你有足够的硬件供电,MySQL就可以毫不费力地处理数百万个索引良好的行。你想瞄准normalised data,而不是把所有东西塞进一个表中的一行。