INSERT
INTO dot_products
SELECT v1.vector_id, v2.vector_id, SUM(v1.attribute_value * v2.attribute_value)
FROM attributes v1
JOIN attributes v2
ON v2.attribute_id = v1.attribute_id
GROUP BY
v1.vector_id, v2.vector_id
在
MySQL
,这可以更快:
INSERT
INTO dot_products
SELECT v1.vector_id, v2.vector_id,
(
SELECT SUM(va1.attribute_value * va2.attribute_value)
FROM attributes va1
JOIN attributes va2
ON va2.attribute_id = va1.attribute_id
WHERE va1.vector_id = v1.vector_id
AND va2.vector_id = v2.vector_id
)
FROM vector v1
CROSS JOIN
vector v2