我有一个结构为现有的数据库如下:数据库设计 - 一个表或多个表/连接
user
user_profile
user_permissions
user_statistics
每个表都有一个用来连接各表一起唯一列如下:
SELECT *
FROM user
INNER JOIN user_profile ON user.user_id = user_profile.user_profile_id
INNER JOIN user_permissions ON user.user_id = user_permissions.user_permissions_id
INNER JOIN user_statistics ON user.user_id = user_statistics.user_statistics_id
WHERE user_id = 1
以这种方式做事情有什么问题吗?或者更好的做法是创建一个包含大量列的表,以便不需要连接?
OK,所以在最佳实践方面,我需要拆分我的数据的唯一时间是当我有一个单一的用户记录在“用户”和多个记录与其他表中的用户记录相关,如统计和权限?使用连接是否会减慢数据库查询的速度? – Reado
它*可以*加速;这取决于您正在存储的数据的性质。 –
如果您没有正确编制索引,连接会使您放慢速度。 FK应该有一个索引,并不是所有的数据库都会自动为它创建一个FK。如果您的字段很少填写(或查询)或非常宽的表格,则可能需要一对一的关系。由于记录大小的限制,非常宽的表格可能会导致性能降低或无法添加所需的信息。 – HLGEM