2013-10-24 66 views
1

我想取出varchar類型外部查找表的列值,以優化一大桌的存儲(有許多重複值)不重複值指數需要重複的空間

做起來的過程非常技術性(創建查找表並引用它而不是實際值),聽起來它應該是基礎結構的一部分(本例中爲sql server或任何RDBMS)。

比我想象的,它應該是一個索引的選項 - 不要存儲重複的值。 只有對重複值的引用。

可以通過這種方式對索引進行優化 - 不保存重複值,而只是引用?

當有許多重複的值時,它應該使表和索引的大小更小。

+0

數據中的每一行都會在索引中有一個條目 - 無論該值是否已經存在或不存在 –

回答

0

SQL Server無法對列值進行重複數據刪除。索引爲基表的每一行存儲一行。他們只是排序不同。

如果你想重複數據刪除,你可以保留一個單獨的表,其中包含所有可能的(或實際發生的)值與一個更短的ID。然後您可以通過僅存儲其ID來引用這些值。

您可以在應用程序代碼或使用觸發器中維護該重複數據刪除表。