Select row_id from table_name
Sample 20;
をエラーを投げている...実行SQLは、「これ以上のスプール領域エラー」これ以上のスプール領域エラーを発行しない
から20のarbitary行を取得する任意のクエリがありますより短い時間でテーブル?テーブルが非常に巨大であると仮定してください
Select row_id from table_name
Sample 20;
をエラーを投げている...実行SQLは、「これ以上のスプール領域エラー」これ以上のスプール領域エラーを発行しない
から20のarbitary行を取得する任意のクエリがありますより短い時間でテーブル?テーブルが非常に巨大であると仮定してください
これは、テーブルのプライマリインデックスによってかなり一般的です。主索引を使用して述部を追加する場合は、結果を戻す必要があります。
結果を制限するために、プライマリインデックスを含むWHERE句を追加するだけで、結果がスプールの問題なしで表示されるはずです。
さて、PIを使用しても、*任意の行*にはなりません。そして、OPで表示されたような 'WHERE' /' JOIN'を使わない単純なSelectの場合、スプールの問題は発生しません(そうでなければ結果がスプールされ、次に 'SAMPLE' /' TOP'が適用されます) – dnoeth
後は実行されたクエリに説明している....まず
.... Table_TがTable_vがそのTable_T上の図である
table_v
にtable_T
をロックします。 次に、すべてのアンプでローカルに構築されたspool2(all_amps)に、(table_v.col2のビューではtable_Tがnull)という条件で、すべての行スキャンを使用して、table_vのビューからall Amp retrieveステップを実行します。入力テーブルはメモリにキャッシュされません。ビットは同期スキャンに適格です。スプールのサイズは1行(35バイト)と高い信頼度で推定されます。ステップの推定時間は2分16秒です
すべてのアンプに対するすべての行をスキャンして、すべてのアンペアにハッシュコードで再配布された、すべての行をスキャンして、すべてのアンプ機能のステップを実行します。結果の行はspool1(group_amps)に格納され、これはアンペアでローカルに構築されます。ステップを使用して上位20行を取り出し、次にステップ4を実行します。サイズは1行41バイトと高い確信度で評価されています
spool2(最後の使用)からすべての行をスキャンする方法で、all-amps stat関数ステップを実行します。すべてのアンプにハッシュコード。結果の行は、ローカルに作成されたspool1(group_amps)に格納されます。このステップは、上位20行を検索するために使用されます。ステップは1行(41バイト)
最後に、我々が関与するすべてのアンペアまでのEND TRANSACTIONを送信することを高い信頼度で推定されている
spool1のコンテンツがユーザーに送り返され
それはあなたがしていることは興味深いです単一のテーブルでスプールスペースの問題を取得することは、そのように選択します。サンプルを選択する前にすべてを計算しなければならないほど大きな実際のクエリですか?あなたは 'SELECT TOP 20'を使うことができますが、それはあまり「恣意的」でなく、もっと「取得するのが最も簡単です」 – JNevill
EXPLAIN計画を見直してください。 SAMPLEは、すべてのAMPSで統計サンプルを取得するために多くの作業を行うという点で、時には邪悪になる可能性があります。 JNevillが示唆しているように、TOP20はより良い選択肢かもしれません。 TOPは、正しくリコールすれば、データで応答する最初のAMPからのデータを返さなければなりません。また、これがビューであり実際のテーブルでない場合、ビューはより多くのオーバーヘッドを引き起こす可能性があります。 –
でも、トップn行のquerryを使ってみましたが、今回はquerryが "もうスプールスペースがありません"という問題は発生しませんでしたが、それ以上の時間稼働していました。いいえ、それは見解ではありません。テーブルには500以上のカラムがあり、それは巨大なものです –