schema – 为什么没有办法将列标记为“关键字”

在典型的星型模式中,您最终得到一堆列,这些列是某个查找表中的ID,其中查找表几乎就是这样:

创建表主机名(
  id主键,
  name varchar(200)
)

当您从主表中选择时,最终会出现一堆左连接,当您插入时,您必须首先查找ID,然后插入,如果它不存在.这是一种痛苦. 50%的数据库相关代码仅用于处理此问题.

有一种方法可以向数据库指示给定列具有较少数量的不同值,这样它就可以构建自己的内部查找表并节省空间.以上将成为:

create table sometablewithahostname (
    ...
    hostname varchar(200) keyword,
    ...
)

而且没有必要管理其他表.
是否有RDBMS系统可以做到这一点?

最佳答案
如果您的目标是在减少存储空间要求的同时进行去标准化,那么Oracle 11gR2中的Hybrid Column Compression可以为此提供帮助.它仅适用于Enterprise Edition with a few specific types of storage.

Storing column data together, with the same data type and similar
characteristics, dramatically increases the storage savings achieved
from compression. The database compresses data manipulated by any SQL
operation, although compression levels are higher for direct path
loads. Database operations work transparently against compressed
objects, so no application changes are required.

转载注明原文:schema – 为什么没有办法将列标记为“关键字” - 代码日志