执行以下 SQL 查询:
SELECT Account, Amount AS Deposit, 0.00 AS Withdrawal, Date
FROM Deposits
WHERE Account = @Account
UNION
SELECT Account, 0 AS Expr1, Amount, Date
FROM Withdrawals
WHERE Account = @Account
ORDER BY Date Desc
相对于:
SELECT Account, TransactionType, Amount, Date
FROM Transactions
WHERE Account = @Account
ORDER BY Date Desc
在第一个查询中,存款和取款存储在不同的表中,每当需要一起查看它们时(例如显示银行对账单时),它们就会合并在一起。第二个查询将所有交易(存款和取款)存储在一张表中,并且通过 TransactionType 列区分交易类型。产生的查询结果并不完全相同,但假设客户对最终输出感到满意。
使用第一个模式设置数据库比第二个模式更好或更差是否有任何性能原因?
编辑:为了清楚起见,我想指出我问这个问题的原因是为了找出是否存在表现与使用一张大表(在其中使用 WHERE 子句查找不同类型的数据)相比,保持较小的表并在必要时使用 UNION 是有好处的。我用上面的例子来更好地表达我的问题。欢迎就其他原因提出哪种模式更好的建议,但也请尝试回答这个问题。
Transactions
似乎更合适,因为它们就是这样。虽然不太明显,但通过表格区分存款和取款并不比通过表格区分现金交易和支票交易更明智。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)