我希望将每行乘以一个特定的行,然后对每行的乘积求和(点积)。我的SQL表是名字和相关高维向量的列表。该表有1个字符串和1000个数字列。通常有几百万行。向量/数组中的每个浮点数都在新列中:
在数组数学中,这只是一个简单的
许多感谢!
+--------+------+-------+------+---+--------+
| NAME | COL0 | COL1 | COL2 | … | COL999 |
+--------+------+-------+------+---+--------+
| TOPAZ | 0.73 | 0.77 | 0.15 | | 0.55 |
| GARDEN | 0.41 | 0.57 | 0.61 | | 0.00 |
| HAVE | 0.40 | 0.32 | 0.23 | | 0.52 |
+--------+------+-------+------+---+--------+
在数组数学中,这只是一个简单的
sum(table * row, axis=1)
。这是一个很大的数组,如果它被写入C并存储在纯内存中,则执行需要几秒钟,因此速度非常重要。但现在它已经太大了,无法放在本地内存中,数据需要存储在SQL服务器中。我该如何以高效的方式计算table * GARDEN,以便我可以获得每行与GARDEN的点积(如下面的示例输出)?+--------+------+-------+------+---+--------+------+
| NAME | COL0 | COL1 | COL2 | … | COL999 | DOT |
+--------+------+-------+------+---+--------+------+
| TOPAZ | 0.57 | 0.24 | 0.34 | | 0.21 | 0.46 |
| GARDEN | 0.42 | 0.43 | 0.12 | | 0.66 | 0.48 |
| HAVE | 0.31 | 0.37 | 0.30 | | 0.47 | 0.40 |
+--------+------+-------+------+---+--------+------+
许多感谢!