• 検索結果がありません。

49 LEFT OUTER JOINの内表をWHERE句で絞り込むと(NULL述語は除く)、INNER JOINと同じ結

ドキュメント内 HiRDB SQLコーディングガイドライン (ページ 50-53)

果になります。また、内表の条件を

WHERE

句に指定するとインデクスを使用出来ず、性能が悪くな ります。ゆえに、

LEFT OUTER JOIN

の内表は

ON

条件中で絞り込む必要があります。

例を図 4-3-1に示します。

Point LEFT OUTER JOIN

の内表は

ON

条件中にて絞り込む

SELECT A.SNAME, B.SURYO

FROM SYOHIN A LEFT OUTER JOIN JUTYU B ON A.DNO = B.DNO AND B.SURYO > 0 WHERE A.SNAME = 'A' ;

×

SELECT A.SNAME, B.SURYO

FROM SYOHIN A LEFT OUTER JOIN JUTYU B ON A.DNO = B.DNO

WHERE A.SNAME = 'A' AND B.SURYO > 0 ;

SELECT A.SNAME, B.SURYO

FROM SYOHIN A INNER JOIN JUTYU B ON A.DNO = B.DNO

WHERE A.SNAME = 'A' AND B.SURYO > 0 ;

内表をWHERE句で絞り込んで いるインデクスが使用されない。

図 4-3-1 LEFT OUTER JOIN 内表の絞り込み

INNER JOINと同じ結果になる。

等価なSQL

内表はON条件中にて絞り込む インデクスを使用する。

結合検索に関する記述

5. 表の分割に関する記述

分割表を使用することで性能向上が図れます。

この利点を活かす

SQL

コーディングについて示します。

© Hitachi, Ltd. 2013 , 2015. All rights reserved.

注文日 注文コード 商品コード 数量 ・・

2009-01-15 10111011 13425 100

・・

2010-03-28 12104567 92473 10

2011-05-30 15012890 51247 50

2012-07-06 17309684 10496 30

2013-11-09 19109953 30929 150

表の分割とは、一つの表を特定の列の値を基に複数の領域へ分割して格納し、管理する方 法です。分割した表を分割表といい、表を分割するときに指定した特定の列を分割キーとい います。SQL実行時は、探索条件に分割キーを指定すると対象となるデータが格納されて いる領域を判定し、必要な領域にのみアクセスします。

解説

アプリケーション側では、表の分割/非分割を 意識しなくてもアクセス可能ですが、分割キーに よるアクセス範囲と(パラレルサーバの)BES間 データ転送方法(5-1-1参照)を意識することで 性能を向上できます。

例)

SELECT

商品コード

,

数量

FROM

注文履歴表

WHERE 注文日 = '2011-04-01'

⇒ 検索対象のRDエリアはRDAREA3のみとなる。

表の分割の詳細につきましては、マニュアル

「システム導入・設計ガイド」ー「表の設計」を 参照してください。

表の分割に関する記述

5-1 表の分割とは

51

◆注文日による表の分割の例

注文履歴表

'2010-01-01'

~'2010-12-31' RDAREA2

'2011-01-01'

~'2011-12-31' RDAREA3

'2012-01-01'

~'2012-12-31' RDAREA4

'2013-01-01'~

RDAREA5

~'2009-12-31' RDAREA1

分割キー

5-1 -1 BES 間データ転送方法(パラレルサーバ)

転送方法の条件

転送元 方式 転送先

パラレルサーバで表の結合する際、BES間のデータの転送をともないます。分割表の結合 では、表の分割キーを結合キーに含むことで、効率よく処理できます。

解説

表の分割に関する記述

サーバ サーバ サーバ サーバ 分割キーによって転送先サーバを決定 サーバ サーバ サーバ サーバ 常に同じ転送先のサーバにデータを転送

サーバ サーバ サーバ サーバ すべての転送先サーバにデータをコピー して転送

1対1転送

( 1 TO 1 )

下記の条件をすべて満たす場合。

・データ転送先の表がキーレンジ 分割表またはハッシュ 分割表。

・転送先の表の分割キーが結合 キーに含まれている。

下記の条件をすべて満たす場合。

・両方の表の分割キー、分割の 種類、分割条件、格納先BESが 完全に一致している。

・両方の表の分割キーが結合 キーに含まれている。

分割キーが、結合キーに含まれ ていない。

注:分割数が多く、転送元のヒット 件数が多いほど、通信および結 合オーバヘッドが大きくなり、性 能が悪くなる。

BES間データ

転送方法の種類

キーレンジ転送

KEY RANGE

ドキュメント内 HiRDB SQLコーディングガイドライン (ページ 50-53)