Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql多表与单表:性能_Mysql_Database_Database Design - Fatal编程技术网

MySql多表与单表:性能

MySql多表与单表:性能,mysql,database,database-design,Mysql,Database,Database Design,想象一下以下类别:酒吧、吃饭的地方、商店等等 每个类别都有一些公共字段,例如 id, name, address and geolocation (Lat and Lng position). 我非常怀疑是否应该创建一个表来组合这些不同的类别,或者是否应该将其拆分为单独的表(每个类别一个表) 我的想法是,分别基于类别和地理位置为每个类别表检索位置在检索和更新方面都会更快,当然,当每个类别的位置数增加时 根据这种方法,我会选择每个类别一张表 但还有一个补充要求。每个地方都有一个所有者(用户)

想象一下以下类别:酒吧、吃饭的地方、商店等等

每个类别都有一些公共字段,例如

id, name, address and geolocation (Lat and Lng position).  
我非常怀疑是否应该创建一个表来组合这些不同的类别,或者是否应该将其拆分为单独的表(每个类别一个表)

我的想法是,分别基于类别和地理位置为每个类别表检索位置在检索和更新方面都会更快,当然,当每个类别的位置数增加时

根据这种方法,我会选择每个类别一张表

但还有一个补充要求。每个地方都有一个所有者(用户),一个用户可以拥有多个地方。这意味着我会:

  • 需要一个多对多表,将用户表与中心巨型表连接起来
  • 每个类别需要一个多对多表
第二种情况是,当用户登录时,该用户拥有的所有位置都将从单个查询返回,即id+名称,假设一个用户可能是多个位置的所有者。
从这个角度来看,第二个选项似乎是一个非常糟糕的主意,因为我似乎需要创建查询来扫描每个表。
我意识到我可以使用索引来加速长表扫描,但我仍然不确定在位置数量急剧增加时的性能,目前大约有8种不同的类别

根据我提出的选项,你认为最理想的解决方案是什么(或者你看到我错过的一个更好的选择了吗?) 我应该指出,web应用程序不会经常混淆类别,尽管条形图也可以创建事件

这个问题的答案对我来说非常宝贵,因为它将为我的应用程序的进一步开发定义基础。
如果您对我的问题不清楚,请告诉我


多谢各位

当数据如此相似时,单个表格通常是最好的。还可以考虑在将来添加一个新的类别——只需更新一个类别字段来包含新的类别,就比创建一个新的表、新的查询和修改所有现有代码要容易得多。
就速度而言,索引将使其变得无关紧要。添加一个类别字段,为其编制索引,速度就不会成为问题。

感谢您这么快消除了我的疑虑,这就是我真正需要知道的。我会在几分钟内接受。这实际上是测试。从一个表开始,如果将来有问题,您可以决定单独划分一个问题类别。