我在SQL Server 2012中有一个非常胖的设置表,现在有超过100列。顾名思义,此表记录了我们网站中的各种设置值。它曾经有少于50列,但现在它的大小翻了一番。
我将设置值存储到数据库中的原因是因为用户需要能够通过UI更改这些设置。
我是否真的担心这张桌子会越来越大?或者我将不得不找到一些其他方法来存储设置数据,例如保存到文件中,或许?有什么好建议吗?
由于
答案 0 :(得分:1)
我们正在使用JSON来存储用户设置。该表只获得两列 - 用户ID和设置字符串。这个字符串很长,但并不重要。您还可以使用XML来存储此数据。
这是用手指修改数据的更糟糕的解决方案,但客户端或ASP.NET服务器从数据库和进程获取的速度更快。
答案 1 :(得分:1)
首先,您不需要在数据库中存储设置,以便用户在运行时更新它们。您只需将它们存储在每当用户进行更改时都会更新的设置文件中。这是一个xml配置文件,效果很好。
但是,如果应用程序是基于网络的,并且您希望设置在设备之间跟随用户,那么将它放在数据库中更有意义。
第二,是的...... 100列是巨大的。您可以考虑将每个设置存储在单独的行中,而不是将每个设置存储在单独的行中,然后使用公共行格式,即ID,SettingName,SettingValue,(可能)DefaultValue。然后你的桌子可以随意增长。
答案 2 :(得分:1)
我想你在关注大桌上的表现?
一个问题是这个表中有多少行? 100列10000行不是真正的问题。超过1000万行的100列是一个略有不同的球赛。不是更好,只是不同。
同样的注意事项适用于小型和大型表: 你正确编制索引吗? 你的IO好吗? 你的空间好吗? 你在高效地查询吗?
对此没有正确答案,这取决于为什么你有大量的列数以及它是否达到你的整体表现。 我们使用>运行1000个表150列没有问题,即使它们之间有数百万行,我也不能抱怨性能。 这是相对去标准化的数据,因此有很多文本。