SQL表与查询有以下几个方案,请大家帮忙分析一下哪种方案比较好?性能差异会很大么?

2024-12-12 22:23:37
推荐回答(2个)
回答1:

首先,不建议从网页(某次查询)来划分表;
其次,视实际情况考虑(这不是绝对的):
如果数据量小,可以做成一个表的,就一张表好了;
如果数据量较大,或者某些字段的数据量相差较大,就分开成不同表。
但是能避免联合或者链接的尽量避免,因为本质上还是临时生成一张表,再查询,效率肯定更低。
原则上首先考虑A。由于你提到set属性字段是公共的,表明这些属性字段应该是来自同一个实体。而同一个实体的属性通常是放在一个表中的。这就是A方案的依据。(比如学生就是一个实体,而姓名,年龄,性别,班级,籍贯等就是他的属性。可以设计一张学生表Student:(sid,sname,sage,sgender,sclass,snative...)其中sid是主键,一般为学号)

如果某个或某些字段数据量特大,例如1需要频繁使用,或者存储的信息通常在1,2,3,7字段里,而同时6,8,9较少用到,或者存储数据量很小,就建议分开成两个表,即选择B。
(还以Student表为例,(sid,sname,sage,sgender,sclass,snative...),你可能会遇到某些属性很少使用的情况,比如籍贯,就可以考虑分成两个表
(sid,sname,sage,sgender,sclass...)和(sid,snative...);
这样的好处就是,不会频繁使用的字段不会被频繁的数据操作涉及到,而极端情况需要使用的话,仍然能够找得到。
例如,一般我们不需要知道一个学生的籍贯,那么就会只用到前一个表,而万一用到的话,就去查第二个表,或者考虑联合或连接
)
你明白了吗?祝好运!

回答2:

效率上如果字段少尽量放在一个表中会好,如果字段多而且都是有用的,都需要查询,那么拆分属性分别存放的好