Sybase 12.7 manual パフォーマンス&チューニング・ガイド, 第 3 章 クエリと削除の最適化

Models: 12.7

1 212
Download 212 pages 60.16 Kb
Page 49
Image 49
第 3 章 クエリと削除の最適化

3 章 クエリと削除の最適化

クエリ内の集合関数で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

tableB

SELECT b1, b2, b3, b4 FROM

UNION ALL

tableC

SELECT c1, c2, c3, c4 FROM

UNION ALL

tableD

SELECT d1, d2, d3, d4 FROM

UNION ALL

tableE

SELECT e1, e2, e3, e4 FROM

UNION ALL

tableF

SELECT f1, f2, f3, f4 FROM

UNION ALL

tableG;

SELECT g1, g2, g3, g4 FROM

SELECT SUM(va1) FROM viewA

GROUP BY va3;

この例では、Sybase IQ オプティマイザが GROUP BY を分割し、6 個の GROUP BY 演算子をクエリ・プランに挿入しています。これにより、集 合情報とデータを格納するために、クエリにより多くのテンポラリ・ キャッシュが必要となります。システムが十分なキャッシュを割り付けら れない場合、オプティマイザは GROUP BY を分割しません。

メモリに空きがある場合は、TEMP_CACHE_MEMORY_MB データベー ス・オプションを使用してテンポラリ・キャッシュのサイズを増やす ことができます。バッファ・キャッシュのサイズの設定方法について は、『Sybase IQ リファレンス・マニュアル』の「データベース・オプショ ン」の「バッファ・キャッシュ・サイズの決定」(107 ページ ) および 「TEMP_CACHE_MEMORY_MB オプション」を参照してください。

パフォーマンス&チューニング・ガイド

33

Page 49
Image 49
Sybase 12.7 manual パフォーマンス&チューニング・ガイド, 第 3 章 クエリと削除の最適化