具有堆叠的SQL性能

时间:2016-05-25 03:52:48

标签: sql sql-server sql-server-2008

我想了解如果我在Table1中堆叠Table2会对性能产生影响吗?哪种性能更好?

查询#1:

SELECT * 
FROM TABLE1 
WHERE ID = 100

输出:

ID  col1 col2
-------------
100  1    0
200  0    1
300  1    0
400  0    1

查询#2:

SELECT * 
FROM TABLE2 
WHERE ID = 100

输出:

ID   col    data
----------------
100  col1    1
100  col2    0
200  col1    0
200  col2    1
300  col1    1
300  col2    0
400  col1    0
400  col2    1

SQL Server如何扫描记录?

由于

1 个答案:

答案 0 :(得分:1)

表1被归一化,而表2被设计为EAV,被认为是反模式,并且有充分的理由。

虽然我认为表1中的表现会更好,但是 除了表现之外,还有一些其他因素需要考虑。

恕我直言,选择EAV设计的唯一理由是当你没有任何其他选择时。 (而且情况很少,因为今天大多数数据库都可以处理复杂的数据类型,如XML或JSON)在这种情况下,选择非常明显 - 表1有一个更好的设计,毫无疑问。