gpt4 book ai didi

mysql - HTSQL 生成的 MySQL 查询非常慢

转载 作者:行者123 更新时间:2023-11-29 23:35:38 25 4
gpt4 key购买 nike

我有一个包含两个表的数据库:

形容词 - ID 主键;名称 varchar;adjectives_reviews - ID主键; ADJECTIVE_ID 外键; REVIEW_ID 外键;计数整数

我想从 adjectives_reviews 中获取不同 ADJECTIVE_ID 的列表,以及具有相同 ADJECTIVE_ID 的所有行的“COUNT”列中的值之和。

形容词表有 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 接口(interface)的情况下获取 CSV 输出的方法。

最佳答案

通过使用 native mysql 客户端并向查询添加 3 行,我能够以 CSV 形式获取结果:

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
INTO OUTFILE '/tmp/adjectives.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

它运行得相当快。

关于mysql - HTSQL 生成的 MySQL 查询非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com