我刚刚在SQL Server Express中遇到了10GB的数据库限制,并且希望删除不必要的列,并将其他列转换为不太重的数据类型。我有29列,只有50M行很害羞。在这29个中,有20个是漂浮物,其中只有10个对我很有用。我可以完全放弃浮动列中的10个,仍然拥有我需要的所有信息。在其余6列中,2是位,2是int(复合键需要),5是int,但可以是tinyint。在SQL Server Express 2014中转换列数据类型时的做法是什么?
如何确保在将这5列的数据类型更改为tinyint之前,事情会正确转换? SSMS警告说,从Design开始的时候会出现潜在的数据丢失问题,所以我想确保事情没有问题,然后再继续操作Alter Table语句。
是化繁为简:
SELECT [ExperimentID],[CycleCount] --My compound key
FROM [dbo].[Simulations]
WHERE (parameter1 < 0 OR parameter1 > 255) OR (parameter2 < 0 OR parameter2 > 255) OR (other search conditions)
还是有更好的方式来验证这些东西呢?
另外,对不起,数据库没有正常规范化,我建议不要由同事规范化,以帮助以后的数据分析。
为什么漂浮?你需要的数字真的很不精确吗?对于tinyint转换,您可以检查MAX(ColumnName)以查看它们是否适合tinyint。我可能会不同意你的同事关于正常化。表结构设计应该由开发人员未来的容易程度来决定。它应该始终是正确地存储数据,但这完全是另一个话题。 –
有些事情要记住,这只是一种方式在路上踢球。如果您要继续添加行,您将再次达到10GB的限制。那么你打算怎么做? –
这个特定的数据库存储了一些模拟结果。 56000/90000已经运行了,我认为通过删除大部分浮点数并在我可以的情况下将整数作为tinyint输入,数据库将远低于10GB。浮点数是需要的,因为我们需要至少6位数的精度超过小数点。 – ijustlovemath