假设我有一个代表用户的表:id, name
。 表格很大,大约有1亿行。
用户也有一些属性,比如说诞生之城。这是可选字段,因此只有一小部分用户(仅说5%)提供了它。所以我还有一张城市表:id, name
。关系是1对多 - 用户只能有一个城市,而一个城市可以成为许多用户的bithplace。
问题是:如何连接它们?
a)将列city_id
添加到users表中。 (对于没有该属性的用户,注定了9500万个空值)
b)创建第三个连接表user_city: user_id,city_id
(如果是的话,目的是省略大量的NULL)。
另外,请记住,应用程序需要
select user.name ... where city_id=xxx
因此,city_id
列需要在任何情况下编入索引