假设我有一个网站,其数据库中有一个表是
Table_name table_1和属性类似于table_1(a1(主键,a2,a3,a4,a5,a6,a7),在我的网站中,对于大多数事务,我只使用属性(a1,a2,a3)但是a4,a5,a6和a7很少使用,所以我想知道从以下选项访问数据的更好的设计方法
A)保持此表不变,并使用此查询从table_1中选择a1,a2,a3;
B)创建2个单独的表table1(a1,a2,a3)和table_2(a1,a4,a5,a6,a7)
哪个approch在数据库上的成本或负载较低?
答案 0 :(得分:1)
B比A提供更低的成本。因为如果你选择A选项,你将浪费a4,a5,a6,a7的空间。但是,如果选择B选项,则必须为connect table_1创建外键(a1)。而且你的SQL查询变得便宜了。
答案 1 :(得分:1)
对于(a1,a2,a3)的读取查询,obviusly" b"是(显然)更便宜。
但所有其他的东西都是最差的除了如果(a4,a5,a6,a7)在大多数情况下是空的并且你之间使用了(1-> 0,1)基数两个表(即:对于table_1中的每个a1,在table_2中有0或1个元组具有相同的a1值,当然,table_2中的a1的所有值都存在于table_1中。)
无论如何,正如我所说,与复杂性,可维护性问题以及效率降低相比,任何可能的优势都是最小的(对于插入以及当您需要来自两个表的数据时)。
所以,如果我是你,我会选择" a"布局毫无疑问。