【发布时间】:2016-02-25 10:43:21
【问题描述】:
我有一种情况,我需要为两种类型的用户设计数据库,比如说 TYPE1 和 TYPE2。 TYPE1 用户是一般用户,将有数百万用户,TYPE2 用户是某种专业的,记录量将受到限制。
我为他们两个制作了一个名为 users 的公用表。现在的情况是,如果我想按城市搜索一组专业人士,就绩效而言,哪种方法最适合?
案例 1:为用户提供一个表(这实际上有助于提高可扩展性)
案例 2:两种类型的用户都有两个单独的表
【问题讨论】:
-
在一个、两个或 20 个表中拥有信息并不会影响 MySQL 在后台所做的工作(它非常有效地多路复用写入 HDD)。如果您认为在 单个服务器 上将某些内容拆分到多个表中有助于提高性能,那您就错了。这就是为什么您总是以可以轻松查询、添加信息或推断信息的方式设计数据库。这意味着 1 表是要走的路。
-
@Mjh 这不是它的保存方式,而是它如何查询数据库。我的意思是假设我在 DB 中有 500 万条记录,有 10 万 TYPE2 用户,我正在为 TYPE2 用户查询一些东西,你不认为 MySQL 会检查所有 500 万条记录来检查该行是否用于 TYPE2 吗?不会影响性能吗?
-
即使您有 1 亿条记录,也不是很多数据。如果您查询数据库以询问有多少特定类型的用户,那么它将遍历整个表。如果您使用类型和用户名查询表,那么您可以索引用户名。登录的用户,您可以通过使用主键获取有关他们的信息。不要因为过早的优化而让你的生活变得悲惨。
-
如果两种类型的大部分列相似,则使用一张表。
标签: mysql performance optimization normalization execution