我正在创建一个项目,我将让某人从 20 个类别中选择最多 3 个类别。因为它总是最多 3 个类别,所以我只在数据库中再创建 3 个列(category_1、category_2、category_3) .
我想在插入时,而不是保存在 3 个不同的列中,而是将数组保存到“类别”列中。
我的问题是,在获取信息的那一刻。如果我确实假设搜索具有 1 个特定类别的每条记录,那么什么会更快?让它查看 1 列是一个数组(我想用 LIKE 或类似的东西)还是查看 3 列?
我希望我的问题很清楚。谢谢。
我正在创建一个项目,我将让某人从 20 个类别中选择最多 3 个类别。因为它总是最多 3 个类别,所以我只在数据库中再创建 3 个列(category_1、category_2、category_3) .
我想在插入时,而不是保存在 3 个不同的列中,而是将数组保存到“类别”列中。
我的问题是,在获取信息的那一刻。如果我确实假设搜索具有 1 个特定类别的每条记录,那么什么会更快?让它查看 1 列是一个数组(我想用 LIKE 或类似的东西)还是查看 3 列?
我希望我的问题很清楚。谢谢。
不要在数据库列中存储逗号分隔的列表(“数组”)。使用交叉引用表。
(如果您想在数据库中强制执行“不超过 3 个类别”条件,您可以category_number
在交叉引用表中添加一个附加列。理想情况下,您将使用检查约束将该列限制为值 1、2和 3,但 MySQL 不支持检查约束;相反,您可以将该列作为另一个具有三行category_number
的表的外键。)permitted_category_number