一列键还是多列键?

时间:2016-09-05 21:45:49

标签: sql database-schema rdbms

假设我在RDBMS中有两个表,它们试图根据不同的密钥规范建模存储和检索相同的数据。 Table1将整个密钥存储在一个char列中,Table2将密钥存储在多个列中,如下所示:

表1:key = String,value = Data

表2:col1 = String,col2 = String,value = Data

Table1键包含与col1和col2的组合相同的信息,以及可能的分隔符,例如。 key =“NASDAQ / SUNW”,col1 =“NASDAQ”,col2 =“SUNW”

我对高效数据检索感兴趣。使用Table1会比Table2更有效吗?

1 个答案:

答案 0 :(得分:2)

如果您的密钥包含多个值,则应将它们分隔为单独的列。这样,如果需要,您可以单独索引它们,例如,如果您需要能够按第二个值过滤结果集(在您的示例中,假设您需要使用SUNW查找所有记录)。

根据经验,如果您发现自己将逗号分隔的值放入单个数据库列中,那么您可能会做错事。