【发布时间】:2011-02-19 04:28:32
【问题描述】:
我正在设计一组网络应用程序来跟踪科学实验室数据。每个实验室都有几个成员,每个成员都可以访问自己的数据和整个实验室的数据。因此,许多典型查询会返回多个成员的记录(例如,我的鼠标、乔的鼠标和莎莉的鼠标)。
我认为我的数据库已经很好地标准化了。我现在想知道如何确保用户能够有效地访问他们自己的数据和他们实验室的数据集,当它混合(希望)来自其他实验室的大量记录时。
到目前为止,我想出的是,大多数表格都以两个字段结尾:user_id 和 labgroup_id。任何 SELECT 语句的 WHERE 子句都将包含对 id 字段之一的适当引用(“...WHERE 'labroup_id=n...”或“...WHERE user_id=n...”)。
我的问题是:
这是一种可以扩展到 10^6 或更多记录的方法吗?
如果是这样,在查询中使用这些字段的最佳方法是什么,以便最有效地搜索数据库的相关子集?例如查询的第一步应该是创建一个仅包含实验室组数据的临时表吗?或者在这种规模下使用 id、user_id 和 labroup_id 字段的某种组合进行索引是否就足够了?
我提前非常感谢任何响应者。
【问题讨论】:
-
mysql 已经内置了一个查询优化器。您还在使用 whit pkeys(索引),所以这应该不是问题。
-
@Ben:不像例如MS SQL、MySQL 不会建议您应该创建索引以提高性能。了解 MySQL 如何使用主键和索引以及如何使用可用的性能测量工具来确保高性能非常重要。
标签: database-design web-applications mysql scalability