0

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 として取得する方法を探しています。

4

1 に答える 1