我有一个匿名表,其中包含三列(Title,Tough,Id),其中只能输入八个不同的艰难值。现在我想知道他们是否需要为我的数据库中的每个艰难值创建 8 个不同的表快速 SQL 查询。
user1432124
问问题
185 次
4 回答
0
我应该做的是以下(假设 Type 是 a VARCHAR
)
创建一个具有两列(typeId, type)的新表。然后引用您的匿名表。这减少了您的数据存储,您只需捕获 8 个值一次。然后你只使用数字来引用这 8 个值。
我不确定这是否会提高您的查询性能,但这肯定会使您的数据库包含更少的冗余数据。
于 2012-05-04T08:08:26.383 回答
0
您应该创建一个Types
包含 和 列的表,type_id
而type_name
不是创建另一个包含 、 和 列anonymous_id
的title
表type_id
。
在第二个表中,type_id
将是链接到 table 的主键 (type_id) 的外键Types
。
这样一来,您的表得到优化并包含更少的重复数据,并且您可以只允许那些已经在数据库中的类型,从而更具可扩展性。
于 2012-05-04T08:09:18.160 回答
0
我建议你继续使用一个表,看看 if 是如何工作的。它将简化您的应用程序结构,并且不会妨碍您查看不同的问题。
但是,如果您在截止日期前,那么您应该考虑您的应用程序结构以及索引将如何增长。如果更改您的应用程序太痛苦,那么您应该快速重做,直到它变成无法解决的问题。
于 2012-05-04T08:13:32.637 回答
0
通常,您应该尝试规范化您的数据结构,并在测量表明您需要时担心性能。
CREATE TABLE `Anonymous` (
`id` INT NOT NULL AUTO_INCREMENT,
`tough_id` INT NOT NULL,
`title` VARCHAR(64),
PRIMARY KEY (`id`),
KEY `idxTough` (`tough_id`)
);
CREATE TABLE `Tough` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(64) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `Tough` (`name`) VALUES ('ToughA'), ('ToughB'), ('ToughC'), ('ToughD');
INSERT INTO `Anonymous` (`title`, `tough_id`) VALUES
('Anon with tough A', 1),
('Anon with tough B', 2),
('Anon with tough C', 3),
('Anon with tough D', 4)
;
于 2012-05-04T08:39:42.000 回答