我正在为工作中的项目设计新数据库。我想创建一个存储数字教室作业的表格。每个作业可以是以下两类之一:“Individual”或“Group”。
首先想到的实现如下:
CREATE TABLE `assignments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`category` varchar(10) NOT NULL DEFAULT 'individual',
PRIMARY KEY (`id`),
KEY `category_index` (`category`(10))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
然后我会选择给定类别的所有作业:
SELECT title FROM assignments WHERE category = "individual"
但是,因为我们过去曾遇到性能问题,所以我试图尽可能地优化设计。因此,我想知道将category
存储为VARCHAR
是否是一个好主意(考虑到表会变得非常大)?索引INT
的效果会比VARCHAR
更好吗?
除了表现之外,我还很好奇从设计角度看什么是一个好的解决方案。建议?