以下哪种数据库设计的SQL查询成本较低?

时间:2016-09-28 13:49:57

标签: mysql database rdbms

假设我有一个网站,其数据库中有一个表是

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在数据库上的成本或负载较低?

2 个答案:

答案 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"布局毫无疑问。