将数组保存在数据库中或创建不同的列

时间:2012-05-01 15:21:35

标签: mysql performance

我正在创建一个项目,我会让某人从20中选择最多3个类别。因为它总是最多3个类别,所以我在数据库中再创建3个列并不是那么多(category_1,category_2 ,category_3)。

我想在插入时,而不是保存在3个不同的列中,只需将数组保存到“类别”列中。

我的问题是,在获取信息的那一刻。如果我确实让我们说搜索每个具有1个特定类别的记录,那么哪个更快?它要查看1列是一个数组(我想象有一个LIKE或类似的东西)或查看3列?

我希望我的问题很明确。感谢。

1 个答案:

答案 0 :(得分:2)

不要在数据库列中存储以逗号分隔的列表(“数组”)。使用cross-reference table

(如果要在数据库中强制执行“不超过3个类别”条件,则可以在交叉引用表中添加其他列category_number。理想情况下,您可以使用检查约束来限制该列为值1,2和3,但MySQL不支持检查约束;相反,您可以将category_number列作为另一个具有三行的表permitted_category_number的外键。)