Sybase IQ 12.7 User Manual

Page of 212
クエリ構築のヒント
 
34
 
Sybase IQ
分割
 GROUP BY によってクエリのパフォーマンスを向上させるには、
AGGREGATION_PREFERENCE データベース・オプションをデフォルト値
 0 に設定します。これにより、Sybase IQ オプティマイザは GROUP BY に
適用する最善のアルゴリズムを判断できるようになります。
Sybase IQ オプ
ティマイザが
 GROUP BY の処理にソート・アルゴリズムを選択するように 
AGGREGATION_PREFERENCE の値が設定されている場合は、分割 GROUP 
BY によるメリットはありません。AGGREGATION_PREFERENCE オプショ
ンを使用すると、オプティマイザが
 GROUP BY の処理に選択するアルゴリ
ズムを上書きできます。分割
 GROUP BY では、この値を 1 または 2 に設定
しないでください。
分割
 GROUP BY の例
次の例では、
tableA という大きなテーブルを、tabA1、tabA2、tabA3、tabA4
という
 4 つの小さなテーブルにセグメント化しています。この 4 つの小さな
テーブルと
 UNION ALL を使用して、unionTab ビューを作成します。
CREATE VIEW unionTab (v1 int, v2 int, v3 int, v4 int) AS
SELECT a, b, c, d FROM tabA1
UNION ALL
SELECT a, b, c, d FROM tabA2
UNION ALL
SELECT a, b, c, d FROM tabA3
UNION ALL
SELECT a, b, c, d FROM tabA4;
Sybase IQ オプティマイザは GROUP BY の処理を次のクエリに分割し、クエリ
のパフォーマンスを向上させます。
SELECT v1, v2, SUM(v3), COUNT(*) FROM unionTab
GROUP BY v1, v2;
SELECT v3, SUM(v1*v2) FROM unionTab
GROUP BY v3;
Adaptive Server Anywhere による処理を引き起こす条件
Sybase IQ アーキテクチャには、Adaptive Server Anywhere のルールに従ってク
エリを処理する製品の部分が含まれています。
CIS ( 以前は OMNI) 機能補正と
呼ばれるこの機能を使用すると、
Sybase IQ のセマンティックで直接サポート
されないクエリを処理できますが、パフォーマンスが大幅に低下します。
CIS は次のクエリを傍受します。
ユーザ定義関数を参照するクエリ
データベース間のジョインまたはプロキシ・テーブルを含むクエリ
特定のシステム関数を含むクエリ
 
カタログ・ストア・テーブルまたは
 SYSTEM dbspace で作成されたテーブ
ルを参照するクエリ