クエリ構築のヒント
•分割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 で作成されたテーブ ルを参照するクエリ
34 | Sybase IQ |