我在这里阅读了很多有关此讨论的帖子,但我的问题是具体的。
请在回复前完整阅读。
我想知道在数据库中是否最好有数百行甚至数千行,或者将其拆分为多个表。
情景是: 我有一个用户,一次只能在一个城市。 (有多个城市,例如巴黎,柏林和伦敦) 现在每个城市都有很多区域(可能有几百个)。 我在想,给每个城市提供自己的桌子会更有效率。
E.G:
rooms_london
- 伦敦的所有地区都在这里作为行
rooms_berlin
- 这里的所有柏林区域都是行
然后在PHP中我可以构造类似于:
的查询 SELECT * FROM rooms_$playerCity WHERE roomID = $playerRoom
这是一种有效的方法还是我应该在中心房间表中添加一个额外的列。
如果我不够清楚,我会尽力澄清你需要的任何东西。
非常感谢
答案 0 :(得分:2)
我不会把房间分成不同的桌子。
如果性能成为问题,我会使用分区http://dev.mysql.com/doc/refman/5.5/en/partitioning.html
+------+ +------+
| City | 1 ---- * | Room |
+------+ +------+
在具有复杂查询和索引不足的几百万行之前,是否...数据库中的数千行或将其拆分 多个表格。
性能不会成为问题
答案 1 :(得分:0)
我不使用MY SQL,但我的SQL Server表设计看起来像这样
Create Table Player (
PlayerID int
...
)
Create Table City (
CityID int
...
)
Crate Table Rooms (
RoomID int
CityID int
...
)
Create Table PlayerRoom (
PlayerID int
RoomID int
ChaeckIn DateTime
CheckOut DateTime
...
)
然后要获得一个房间中的最后一个玩家,你可以通过
查询 Select Top 1 * from PlayerRoom where Roomid = @roomID order by CheckIn Desc