我试着四处寻找解决这个问题的最佳方法,但我找不到以前任何此类问题的例子。
我正在建设一个基于超本地的互联网购物中心,该区域被划分为大约3000个区域。每个区域有大约300件物品。它们是相似的项目,但可以根据每个区域的不同而有所不同。我需要得到每个区域的“可用项目”列表。
插入速度不是问题,它主要是根据“区域”值获取项目。为这样的实例设置数据库的最有效方法是什么?
1张有1m行的表,例如
ID区域项目可用
1 1 1年
2 1 2 N

1262 4 35年
300个表,3000行,例如
表:1区
ID项目可用
1 1年
2 2 N
表:4区
ID项目可用

35岁
一个表,300列(每个项目),3000行
ID区域项目1项目2…
1 1 Y N…

4 4 y y…
提前感谢任何帮助或任何线索,我可以使用,以便我可以作出决定!

最佳答案

基于意见的限制,但我们来了;
选择1很可能是你想要的。
选项2将为您提供300个要维护的表,因此如果以后需要添加一个字段,那么您将有300个表要更改,这听起来像是一个可维护性的噩梦。而且,300个索引的缓存可能比一个更大的索引差,在所有区域中搜索特定项基本上是不可能的。
选项3将要求您更改表结构和查询以添加300多个项。另外,要想通过id找到一个条目,您需要一个看起来像SELECT xx FROM yy WHERE item1=57 OR item2=57 OR ... OR item300=57的sql,mysql的优化器很可能会放弃它。

关于mysql - 1M行,1个表,几列与300个表,3000行,几列与300列,3000行,1个表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34871636/

10-16 15:26