MSSQL数据库。我有使用旧数据库数据创建数据库的问题。旧数据库结构是由ID
相互连接的数千个表。在此表中,数据重复多次。旧数据库表有超过50 000行(用户)。结构如下表
Users (id, login, pass, register-date, update-date),
Users-detail (id, users_id, some data)
Users-some-data (id, users_is, some data)
这种表是数百种。
问题是,要选择哪种db结构设计,一个包含所有这些数据的表,或者由一些主题分隔的数百个表。
哪种类型的数据库结构具有更好的性能?
Select id, login, pass from ONE_BIG_TABLE
或
Select * from SMALL_ONLY_LOGINS_TABLE.
答案 0 :(得分:5)
答案真的取决于使用方法。如果他们不知道使用情况统计数据,那么没有人可以为您优化数据库。
正确的数据库设计要求实体存储在单个表中,例如客户端及其详细信息。
但是,在您仅多次访问/写入某些实体数据和/或存储有关客户端的可选信息(例如,某些长文本,传记,历史记录,额外地址)时,此规则可能会更改等)在这种情况下,将它们存储在子表上是最佳的。
如果你发现自己有一堆具有全零值的列,那意味着你应该强烈考虑一个子表。
如果您只需要针对数据库表尝试登录凭据,则根据用户名/密码是否正确返回bool值的存储过程将为您节省数据的往返。
答案 1 :(得分:0)
如果没有索引,较小的表上的选择会更快。但是你可以在两个表上创建相同的覆盖索引(id,login,pass),因此如果只需要那些3列,那么两个表的性能可能会相同。 在不知道数据库使用情况的情况下,无法回答哪个数据库结构更好的一般问题。