一个真实的生活对象 - 两个表代表它?

时间:2012-01-10 10:21:56

标签: mysql

这对我来说很棘手。请告诉我哪种方法更有效。

我正在设计一张代表现实生活场所的桌子,主要是夜总会。我要在数据库中创建这样一个地方,但如果它的所有者想在我的系统中使用一个帐户(控制我的应用程序使用的数据),他可以创建一个。

在系统的另一端,我有我的应用程序的用户,可以访问有关此地点的一些数据。无论是否有该地点所有者的帐户,他们都会获得数据,或者没有。

现在,我想到的是创建两个表:

地点(id,lng,lat,姓名,地址......)

places_adm(id_from_places,username,pass,some_other_fields_with_owners_decisions)

当我只需要应用程序的前端用户的数据时,我从places表中获取它。当地方所有者拥有一个帐户时,我会向他展示两个表中的数据。使用这种方法,在处理前端用户时,我没有任何额外的(通常是空的)字段,比如密码,这应该使用户更快 - 这是我的首要任务。如果占位所有者创建了一个帐户,他也可以访问这些数据,但他也可以访问第二个表。对于场所所有者来说,比使用一张桌子要慢,但对于管理面板来说,这并不重要。

问题是 - 这种方法是否会使它更快(优先考虑前端用户访问),或者我应该“坚持规则”并使用一个表并保留其中的所有数据,即使它将是空的许多情况并没有被前端用户使用?

编辑:为了说明问题,最终的问题是 - 具有较少字段的表的执行速度是否明显快于具有前端用户无法访问的字段的表,但具体是对于“地方”而言对于“地方所有者”的管理小组来说很重要(因此很少访问,因此在这种情况下性能不会成为问题)。

2 个答案:

答案 0 :(得分:1)

如果 - 在某些时候 - 你允许地方所有者和一些如果他信任的员工管理数据怎么办?你会在你的桌子上添加3列吗?为什么3?也许10? :)

分别存储管理员(place_id,用户名,密码)和有关该地点的数据似乎更灵活。

答案 1 :(得分:0)

我在SO上发现了一个类似的问题(我有一个问题需要解释我的需求)。

MySQL query performance

看来,在我的情况下,最好在性能方面制作两个单独的表格。 Quassnoi说,在表中添加一个字段会使不选择它的查询运行得更慢,那些选择它的运行速度更快。与您在表中没有特定字段的情况相比,当您连接表以检索该字段时的情况更快时,显然会更慢。

这意味着,将不太重要的字段保存在单独的表中将是一种很好的做法。特别是当它们是动态格式(varchar) - http://www.mysqlperformanceblog.com/2009/09/28/how-number-of-columns-affects-performance/时。我想知道大家是否同意......

如果在另一个SO答案的帮助下回答我自己的问题是错的,请告诉我,我是新来的。

感谢bububaba链接到性能测试。

相关问题