0

私は3つのテーブルを持っています:

Value v

+-------------------------------+
| Owner | Location |    Value   |
+-------------------------------+
|Bob    |    A1    |    0.25    |
|Bob    |    B4    |    0.10    |
|Dale   |    Z3    |    0.50    |
|Dale   |    A1    |    0.25    |
|Rick   |    B4    |    0.10    |
|Rick   |    Z3    |    0.50    |
+-------------------------------+

PurchasePercentage p

+-------------------------------+
| Buyer | Location | Percentage |
+-------------------------------+
|Bill   |    A1    |    0.10    |
|Bill   |    B4    |    0.20    |
|Kyle   |    Z3    |    0.30    |
|Kyle   |    A1    |    0.50    |
|Jan    |    B4    |    0.15    |
|Jan    |    Z3    |    0.25    |
+-------------------------------+

Buyout b

+------------------+
| Owner |   Buyer  |
+------------------+
|Bob    |   Bill   |
|Bob    |   Kyle   |
|Dale   |   Jan    |
|Dale   |   Bill   |
|Rick   |   Kyle   |
|Rick   |   Jan    |
+------------------+

私が探しているのは、4 番目のテーブルです。

PossibleBuyouts

+--------------------------------+
| Owner |   Buyer  |  BuyoutCost |
+--------------------------------+

Buyout表に示されているトランザクションに基づいています
。ここBuyoutCostで、 はv.Value*p.Percentage
の合計でありLocation
BuyerOwnerが共通しています。

したがって、これらの例は次のPossibleBuyouts表を返します

+--------------------------------+
| Owner |   Buyer  |  BuyoutCost |
+--------------------------------+
|Bob    |   Bill   |    0.045    |
|Bob    |   Kyle   |    0.125    |
|Dale   |   Jan    |    0.125    |
|Dale   |   Bill   |    0.025    |
|Rick   |   Kyle   |    0.150    |
|Rick   |   Jan    |    0.140    |
+--------------------------------+

例として最初の行をレイアウトすると、数学は次のようになります。

-Bob と Bill は両方ともロケーション A1 と B4 を共有してい
ます -A1 に対する Bob の所有権の値は 0.25 で、Bill は 0.10% を望んでいます
-A1 のコストは (0.25*0.10) = 0.025 に
なります -B4 に対する Bob の所有権の値は 0.10 で、Bill は望んでいます0.20%
- B4 のコストは (0.10*0.20) = 0.020
-Sum(0.025 + 0.020) = 0.045 の BuyoutCost になります。

あなたが私を助けることができるなら、私はこれを行うための最も効率的な方法を探しています.

~1500 の異なる所有者、~1000 の異なる買い手、および ~500 の異なる場所があるため、潜在的な組み合わせの数によって、クエリ時間が非常に長くなります。これを行うための最速の方法は何だと思いますか? すべてにインデックスが付けられ、データは可能な限り最小のサイズに切り詰められます。

4

1 に答える 1