我的老板确信你永远不应该从生产中的表中删除列(有关它的内容可能会搞乱索引)。多年来,这种“实践”导致我们的许多表格变得臃肿,有数百个未使用的遗留列。
除了必须重构我们的(生成的)数据层之外,还有任何可靠的理由不从表中删除未使用的列吗?我的老板是否纠正它可能会破坏和索引或产生其他副作用?
答案 0 :(得分:1)
我在删除列时从未遇到类似的事情。您必须清理索引,因为我不相信您可以删除索引当前使用的列。但是你应该这样做,因为在索引中留下一个未使用的列将无助于性能;它更有可能损害性能,因为索引中的列与所需的列不匹配。
此外,通过保留未使用的列,访问速度会变慢,因为不必要的列需要额外的空间(这会增加行大小,这意味着读取速度更慢,单个数据页上的行更少)。
答案 1 :(得分:1)
我看到的唯一副作用是通过减少表的大小和更好的不使用空列的索引(如果是)来提高性能。您无法删除索引使用的列,因此您无论如何都必须重新创建索引。继续在测试环境中清理表格,进行足够的测试以确保没有副作用(它不会),然后在生产中应用您的更改。另外,请放开您的数据/业务建模工具。
答案 2 :(得分:0)
嗯......我开始考虑它,我想出了一个上面没有提到的问题。如果查询直接引用列,则删除列可能会破坏视图,函数和存储过程。在维护良好/优化的系统中,这可能不是问题(如果它真的没有被使用那么它不应该被引用到任何地方)。