Sybase 12.7 Manuel D’Utilisation

Page de 212
 3 章    クエリと削除の最適化
パフォーマンス&チューニング・ガイド
33
クエリ内の集合関数で
 DISTINCT が指定されていない場合に、分割 GROUP
BY によってクエリのパフォーマンスが向上する可能性があります。次の
クエリでは
 SUM DISTINCT を使用しているため、分割 GROUP BY による
メリットはありません。
CREATE VIEW viewA (va1 int, va2 int, va3 int,
va4 int) AS
SELECT b1, b2, b3, b4 FROM tableB
UNION ALL
SELECT c1, c2, c3, c4 FROM tableC;
SELECT SUM(DISTINCT va1) FROM viewA GROUP BY va3;
分割
 GROUP BY によってクエリのパフォーマンスを向上させるには、追
加の
 GROUP BY 演算子の処理に使われる集合情報とデータを格納するた
めに、テンポラリ共有バッファ・キャッシュに十分なメモリが必要です。
CREATE VIEW viewA (va1 int, va2 int, va3 int,
va4 int) AS
SELECT b1, b2, b3, b4 FROM tableB
UNION ALL
SELECT c1, c2, c3, c4 FROM tableC
UNION ALL
SELECT d1, d2, d3, d4 FROM tableD
UNION ALL
SELECT e1, e2, e3, e4 FROM tableE
UNION ALL
SELECT f1, f2, f3, f4 FROM tableF
UNION ALL
SELECT g1, g2, g3, g4 FROM tableG;
SELECT SUM(va1) FROM viewA GROUP BY va3;
この例では、
Sybase IQ オプティマイザが GROUP BY を分割し、6 個の
GROUP BY 演算子をクエリ・プランに挿入しています。これにより、集
合情報とデータを格納するために、クエリにより多くのテンポラリ・
キャッシュが必要となります。システムが十分なキャッシュを割り付けら
れない場合、オプティマイザは
 GROUP BY を分割しません。
メモリに空きがある場合は、
TEMP_CACHE_MEMORY_MB データベー
ス・オプションを使用してテンポラリ・キャッシュのサイズを増やす
ことができます。バッファ・キャッシュのサイズの設定方法について
は、
Sybase IQ リファレンス・マニュアル』の「データベース・オプショ
ン」の
および
TEMP_CACHE_MEMORY_MB オプション」を参照してください。