0

我试图运行一个简单的查询,但我得到了错误response too large to return

SELECT accno, year, month, count(*) as cnt
FROM eric.accesslogs_tbl
GROUP BY accno, year, month
ORDER BY cnt, year, month limit 1000;

我的数据表统计:

表大小:64.7 GB
行数:59,971,371

有解决方法吗?否则,我们无法使用它。

4

1 回答 1

2

您达到的限制不是您可以返回的行数,限制是GROUP BY操作内部使用的数据量。

有一个实验性功能可以让您消除此限制:尝试使用GROUP EACH BY而不是GROUP BY.

或者,您可以在不使用实验功能的情况下使用该TOP 函数来执行此操作。您的案例TOP有点棘手,因为您想要三个不同字段的最佳结果,但您可以将它们连接在一起:

SELECT TOP(acct_month, 1000), COUNT(*) AS cnt FROM (
    SELECT CONCAT(CONCAT(CONCAT(CONCAT(
        STRING(accno), '-'), STRING(year)), '-'), STRING(month)) 
        AS acct_month 
    FROM eric.accesslogs_tbl)

结果会有点不稳定,因为它们只有一个字段 accno-year-month。

于 2012-10-02T21:09:19.433 回答