这是场景:我有一个订单表和一个客户表。我想计算total
特定列的总和storeID
。问题是我的公司曾经将它存储storeID
在customers
表中,但现在它被存储在orders
表中。在我们的数据库中有订单storeID
只在表中设置,只在表中设置,或在两个表中设置。customers
orders
以下是一些架构示例数据供参考:
表Orders
:
+----+-------+------------+---------+
| id | total | customerID | storeID |
+----+-------+------------+---------+
| 0 | 100 | 1 | 1 |
| 1 | 50 | 1 | NULL |
| 2 | 75 | 1 | 1 |
+----+-------+------------+---------+
表Customers
:
+----+----------+
| id | storeID |
+----+----------+
| 1 | 1 | NULL |
+----+----------+
我一直在尝试计算订单总额的查询如下所示:
SELECT SUM(total)
FROM orders o
INNER JOIN customers c
ON c.ID = o.customerID
WHERE ISNULL(c.storeID,o.storeID) = @storeID
此查询有效,但速度非常慢,因为我们的数据库中有太多订单记录。有没有更有效的方法来做到这一点?我正在使用 SQL Server 2008 R2。
谢谢,马特