我有两个表FactLik
(200 万行)和UpdateStPrice
(500k 行)。我需要FactLik
使用规则更新表。
更新价格
| PRODUCTKEY | WAREHOUSEKEY | STARTDATE | ENDDATE | PRIORITY | UNITPRICE |
---------------------------------------------------------------------------
| 36975 | 6 | 20120630 | 20121011 | 0 | 395 |
| 36975 | 6 | 20121018 | 20291231 | 0 | 371 |
| 36975 | 6 | 20121126 | 20121211 | 120 | 313 |
| 36975 | 6 | 20121126 | 20121219 | 120 | 288 |
| 36975 | 6 | 20121212 | 20291231 | 120 | 313 |
FactLik
| TIMEKEY | PRODUCTKEY | PRODUCTGROUPKEY | WAREHOUSEKEY | PRICE |
-------------------------------------------------------------------
| 20121205 | 36975 | 89 | 6 | (null) |
更新 FactLik 行的规则
- 同样
ProductKey
,在MAX 和 和之间的行中WarehouseKey
找到。UpdateStPrice
Priority
FactLik.TimeKey
StartDate
EndDate
- 现在找到
StartDate
MAX所在的行。 - 现在找到
EndDate
MIN 所在的行。
预期结果来自UpdateStPrice
:
| PRODUCTKEY | WAREHOUSEKEY | STARTDATE | ENDDATE | PRIORITY | UNITPRICE |
---------------------------------------------------------------------------
| 36975 | 6 | 20121126 | 20121211 | 120 | 313 |
结果FactLik
:
| TIMEKEY | PRODUCTKEY | PRODUCTGROUPKEY | WAREHOUSEKEY | PRICE |
-------------------------------------------------------------------
| 20121205 | 36975 | 89 | 6 | 313 |
我的我的查询 非常慢,实际上她的运行速度超过了 12 个小时。我在两个表上都有一些索引(建议执行计划),但它们根本没有帮助:)
因此,如果您能帮助我优化此查询,我将不胜感激。