我想了解如果我在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如何扫描记录?
由于
答案 0 :(得分:1)
表1被归一化,而表2被设计为EAV,被认为是反模式,并且有充分的理由。
虽然我认为表1中的表现会更好,但是 除了表现之外,还有一些其他因素需要考虑。
恕我直言,选择EAV设计的唯一理由是当你没有任何其他选择时。 (而且情况很少,因为今天大多数数据库都可以处理复杂的数据类型,如XML或JSON)在这种情况下,选择非常明显 - 表1有一个更好的设计,毫无疑问。