Sybase 12.7 Home Theater System User Manual


 
クエリ構築のヒント
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 という大きなテーブルを、tabA1tabA2tabA3tabA4
という 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 で作成されたテーブ
ルを参照するクエリ