1

我想通过将 varchar 类型的列的值取出到外部查找表来优化大表的存储(有很多重复值)

这样做的过程本质上是非常技术性的(创建查找表并引用它而不是实际值),听起来它应该是基础设施的一部分(在这种情况下是 sql server 或任何 RDBMS)。

比我想象的要多,它应该是索引的一个选项——不要存储重复的值。只是对重复值的引用。

可以以这种方式优化索引 - 不保存重复值,而只是参考?

当有许多重复值时,它应该使表和索引的大小更小。

4

1 回答 1

0

SQL Server 无法对列值进行重复数据删除。索引为基表的每一行存储一行。它们只是排序不同。

如果要删除重复数据,可以保留一个单独的表,其中包含具有更短 ID 的所有可能(或实际出现的)值。然后,您可以仅通过存储它们的 ID 来引用这些值。

您可以在应用程序代码中或使用触发器维护该重复数据删除表。

于 2013-10-24T11:31:36.813 回答