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 あるいは、関数を使用して実験的な機能を使用せずにこれを行うこともできます。3 つの異なるフィールドの上位の結果が必要なため、ケースは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)

1 つのフィールド accno-year-month があるため、結果は少し不安定になります。

于 2012-10-02T21:09:19.433 に答える