2 つのテーブルを持つデータベースがあります。
形容詞 - ID プライマリ キー。NAME varchar; adjectives_reviews - ID プライマリ キー; ADJECTIVE_ID 外部キー。REVIEW_ID 外部キー; COUNT int
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 として取得する方法を探しています。