我有一个包含两个表的数据库:
形容词 - ID 主键;名称 varchar; adjectives_reviews - ID 主键;ADJECTIVE_ID 外键;REVIEW_ID 外键;计数整数
我想从 adjectives_reviews 中获取不同 ADJECTIVE_ID 的列表,其中包含具有相同 ADJECTIVE_ID 的所有行的“COUNT”列中的值的总和。
adjectives 表有 46,000 行,而 adjectives_reviews 有 ~2,849,708 行。
我正在使用以下 HTSQL 查询:
/adjectives{name,sum(adjectives_reviews.count)}
它被翻译成SQL:
SELECT `adjectives`.`name`,
COALESCE(`adjectives_reviews`.`sum`, 0)
FROM `adjectives`
LEFT OUTER JOIN (SELECT CAST(SUM(`adjectives_reviews`.`count`) AS SIGNED INTEGER) AS `sum`,
`adjectives_reviews`.`adjective_id`
FROM `adjectives_reviews`
GROUP BY 2) AS `adjectives_reviews`
ON (`adjectives`.`id` = `adjectives_reviews`.`adjective_id`)
ORDER BY `adjectives`.`id` ASC
这个查询产生了我想要的结果,但它太慢了。事实上,它太慢了,以至于 HTTP 服务器超时,我无法获得我需要的输出 CSV 文件。我正在寻找一种优化此查询的方法,或者一种在不使用 HTSQL 的 HTTP 接口的情况下将输出作为 CSV 的方法。