Hasura 对聚合查询有限制吗?
Is there a limit in Hasura for aggregation queries?
大家好,我今天在是否使用 graphQL 的问题上有点矛盾。情况是我正在处理一个非常大的数据库,此时我想知道在聚合查询中是否有限制要考虑(你得到计数)或者考虑到这个数据库包含数百万条记录是否可行。
欢迎任何意见和建议,谢谢!
Hasura 本身不处理聚合,它将几乎所有操作委托给底层数据库。
示例 – 我有一个 table 约 1200 万行,当我执行此聚合查询时:
{
price_history_aggregate {
aggregate {
count
}
}
}
生成的确切 SQL 是:
SELECT
json_build_object(
'aggregate',
json_build_object('count', COUNT(*))
) AS "root"
FROM
(
SELECT
FROM
(
SELECT
*
FROM
"public"."price_history"
WHERE
('true')
) AS "_0_root.base"
) AS "_1_root"
如您所见,此 SQL 已经在构建 JSON 响应:{"aggregate" : {"count" : 12284957}}
.
现在,运行 这个查询需要几秒钟,有一些关于 PostgreSQL 计数缓慢 (https://wiki.postgresql.org/wiki/Slow_Counting) 的讨论,但这与 Hasura 或 GraphQL 无关。
大家好,我今天在是否使用 graphQL 的问题上有点矛盾。情况是我正在处理一个非常大的数据库,此时我想知道在聚合查询中是否有限制要考虑(你得到计数)或者考虑到这个数据库包含数百万条记录是否可行。 欢迎任何意见和建议,谢谢!
Hasura 本身不处理聚合,它将几乎所有操作委托给底层数据库。
示例 – 我有一个 table 约 1200 万行,当我执行此聚合查询时:
{
price_history_aggregate {
aggregate {
count
}
}
}
生成的确切 SQL 是:
SELECT
json_build_object(
'aggregate',
json_build_object('count', COUNT(*))
) AS "root"
FROM
(
SELECT
FROM
(
SELECT
*
FROM
"public"."price_history"
WHERE
('true')
) AS "_0_root.base"
) AS "_1_root"
如您所见,此 SQL 已经在构建 JSON 响应:{"aggregate" : {"count" : 12284957}}
.
现在,运行 这个查询需要几秒钟,有一些关于 PostgreSQL 计数缓慢 (https://wiki.postgresql.org/wiki/Slow_Counting) 的讨论,但这与 Hasura 或 GraphQL 无关。