HiRDB SQLコーディングガイドライン

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "HiRDB SQLコーディングガイドライン"

Transcription

1 HiRDB SQL コーディングガイドライン第 08 版 2015/06 株式会社日立製作所情報 通信システム社 IT プラットフォーム事業本部 DB 部

2 Contents 1. はじめに 2. インデクスを有効に使う記述 3. 副問合せに関する記述 4. 結合検索に関する記述 5. 表の分割に関する記述 6. DBの件数を考慮した記述 7. 排他に関する記述 8. 更新に関する記述 9. アプリケーション上での記述 10. 保守性を向上させるための記述 11. おわりに 1

3 1. はじめに 2

4 1-1 本資料について 目的データベース ( 以下本ドキュメントでは DB と略す ) へのアクセス性能は SQL 文のコーディング方法により左右されることがあります 本ガイドラインでは DB へのアクセス性能を良くするための推奨の SQL コーディング方法を示します 本ガイドラインを各プロジェクトの SQL コーディング規約を制定する際に活用していただくことで DB にアクセスするアプリケーションの性能トラブルを 未然に防ぐことを目的とします なお 内容は一般的な推奨であり 必要であれば異なる SQL コーディング方法をとることを妨げるものではありません 対象バーション本ドキュメントは HiRDB Version 8 以降を対象としています 留意事項本ドキュメントの例題にて 対比している SQL は 必ずしも等価な SQL でないため SQL 文を変形するときは 十分注意してください コーディング例の凡例本ドキュメントの例題にて コーディングの推奨度合を記号表記しています 記号と意味を以下に示します : 特に推奨 : 推奨 : 改善の余地あり : 推奨しない 改善が必要 以下の URL より HiRDB の基礎知識を理解しておくと 本資料の理解が深まります HiRDB 技術資料の URL 3

5 1-2 アプリケーション開発の流れ 1. スキーマ設計 性能とのトレードオフで正規化のレベルを考える 2. プロジェクト内の SQL コーディング規約制定 ジョインは 4 表まで など プロジェクトで性能も含めた品質を確保するための標準を定める 本ガイドラインを活用 3. アプリケーション開発 コーディング規約に従って アプリケーションを開発する 4. 単体テスト SQL のアクセスパスを確認して アプリケーション開発へフィードバック 5.SI 4

6 1-3 SQL のアクセスパスの評価 本ドキュメントを利用し SQL コーディング後 インデクスの使用有無 結合方法などが意図した通りになっているか 効率の良いアクセスパスになっているかを SQL トレースの UAP 統計レポート機能にて確認することを心がけてください アクセスパスの取得 クライアント環境定義に以下を追加し UAP 統計レポートの中で取得します No. クライアント環境定義 統計情報の内容 1 PDCLTPATH 情報出力先 省略時は カレントディレクトリが仮定されます 2 PDSQLTRACE 3 PDUAPREPLVL 4 PDREPPATH トレースのファイルサイズ (byte) を指定 0 を指定した場合は ファイルの最大のサイズとなります 省略をした場合は 情報を出力しない UAP 統計レポートの出力情報を指定します 出力には アクセスパス情報 SQL 単位の情報 UAP 単位の情報 SQL 実行時の中間結果情報があります アクセスパスの解析時は a を指定し全ての情報を出力することをお勧めします UAP 統計レポートファイルを PDCLTPATH で指定したディレクトリとは別の場所に格納したい場合に指定する 指定すると CONNECT 単位にファイルが分かれる アクセスパスのチェック 以下のキーワードで示されるアクセスパスは 定性的に負荷の高い処理であるためチェックアウトします ' TABLE SCAN ' ( データページ全参照 [ テーブルスキャン ]) ' AND PLURAL INDEXES SCAN ' (AND 複数インデクス利用 ) ' MERGE JOIN ' ( マージジョイン ) ' CROSS JOIN ' ( 直積 ) ' FULL SCAN ' ( インデクスリーフページのフルスキャン ) ' WORK TABLE SUBQ ' ( 副問合せ結果の作業表への繰り返しスキャン ) ' NESTED LOOPS WORK TABLE SUBQ ' ( 副問合せの繰り返し実行と作業表へのスキャン ) 5

7 2. インデクスを有効に使う記述 容量の多い DB を高速にアクセスする手段としてインデクスがあります しかし インデクスを定義したにもかかわらず インデクスが有効に使用されないことがあります 6

8 インデクスを有効に使う記述 コーディング方法を説明する前に まず インデクスをどのように使ってアクセスするデータを絞り込んでいるか ご説明します 7

9 インデクスを有効に使う記述 検索方式 解説各検索方式の特徴について解説します テーブルスキャン 検索条件の内容にかかわらず 検索対象表の全行をシーケンシャルにアクセスする方法です 条件によって検索結果を絞り込める場合でも すべてのデータページを参照するため データ量が多いと性能は悪くなります インデクススキャン インデクスを参照して条件に該当するデータを絞り込んでから テーブルのデータをアクセスする方法です インデクスであまり絞り込めない場合は データページに対するランダムな入出力が増え 性能が悪くなります 特にインデクスの全範囲が検索対象になるケースをフルスキャンと呼びます インデクス キースキャン インデクスを参照してインデクス中のデータ ( インデクス構成列の値または行識別子 ) にアクセスする方式です インデクスであまり絞り込めない場合でも データページの入出力がなく インデクスページを参照するだけなので 高速に検索できます インデクス 表データ 表データ 8

10 インデクスを有効に使う記述 インデクスの基本構造 解説 インデクスは キーとキー値から構成されます 列の内容を示した列名のことをキーといいます また 列の値のことをキー値といいます 表を検索するときの探索条件で使用する列にインデクスを作成しておくと 表の検索性能が向上します インデクスの B-tree 構造 論理単位 ルートページ中間ページリーフページ 説明 B-tree 構造中の最上位のインデクスページ 下段のページを指しています B-tree 構造中の中間のインデクスページ 下段のページを指しています B-tree 構造中の最下位のインデクスページ 各インデクスページのキー値とそのアドレスを持っています 412M 671M ルートページ 202M 412M 591S 671M 中間ページ 101L 202M 302S 412M 591L 591S 671L 671M リーフページ : インデクスページ 9

11 インデクスを有効に使う記述 表検索時の条件の分類 解説 SQL の探索条件は すべてサーチ条件にて評価できるのが望ましいです そして それは SQL の記述により変わります インデクス サーチ条件 : インデクスをサーチするための条件で インデクスのサーチ範囲が決定 サーチ条件なしでのインデクス利用 : インデクスリーフページのフルスキャン データ キー条件 : インデクス構成列のキー値で評価する条件で データページ中のアクセス行を削減 サーチ条件 + キー条件 : データページのアクセス行が決定 行の取出し その他の条件 : データページ中の行データを参照して 条件を評価 10

12 インデクスを有効に使う記述 次にインデクスを有効に使用するための SQL コーディングについて示します なお 設計段階ではインデクスを定義しない予定であっても 後のチューニングによりインデクスを定義することが考えられるため インデクス定義のみでインデクスが有効となるような SQL にしておく必要があります 11

13 インデクスを有効に使う記述 2-2 条件指定によるインデクス効果 (1) Point WHERE 句の AND 条件の指定順は 性能に影響しない 条件指定 (WHERE 句 ) の "AND" "OR" 指定の記述によって 指定項目が同じ場合でもインデクスの効果が低い場合があります = 条件の項目はインデクスの構成列の先頭から連続している項目を AND で指定すると効率が良いです 例を図 に示します インデクスは以下の複数列インデクス A(C1,C2,C3) すべてand 条件の場合 項目の順番が入れ替わる ~ where C1 = 10 and C2 = 20 and C3 = 30 ~ where C1 = 10 and C3 = 30 and C2 = 20 ~ where C3 = 30 and C2 = 20 and C1 = 10 複数列インデクス A を C1 C2 C3 の順で定義 C1 C2 C3 の順番には関係なく すべてのケースでインデクスが有効となる 図 "AND" "OR" 指定その 1 12

14 インデクスを有効に使う記述 条件指定によるインデクス効果 (2) すべてand 条件の場合 インデクス未定義項目あり ~ where C1 = 10 and C4 = 40 and C3 = 30 インデクスは以下の複数列インデクス A(C1,C2,C3) 一致する先頭の C1 のみインデクスのサーチ条件が有効となる インデクスの先頭項目なし ~ where C2 = 20 and C4 = 40 and C3 = 30 and 条件とor 条件の場合 ~ where ( C1 = 10 ) or ( C1 = 11 and C2 = 22 ) ~ where ( C1 = 10 and C2 = 20 ) or ( C3 = 30 ) 先頭の C1 が一致しないためインデクスが無効となる ( リーフページのフルスキャン ) and が優先されるが or のそれぞれに C1 があるので インデクスは有効になる ( インデクス検索を or の両辺で 2 回行う ) and が優先され C3 が or で独立していると C3 はインデクスの先頭でないのでインデクスが無効となる ( リーフページのフルスキャン ) 図 "AND" "OR" 指定その 2 13

15 インデクスを有効に使う記述 条件指定によるインデクス効果 ( 例外的な事例 ) 解説 インデクスを有効に使用する SQL コーディングをしていても性能が出なかった事例を示します データの値がすべて同じ列は 基本的にインデクスから削除してください 業務等の都合で当該列をインデクスから削除が出来ない場合は 後方の構成列としてください SELECT C1, FROM TBL1 WHERE C1 =? AND C3 =? AND CFLG =? インデクスは以下の構成列の主キー (PK) のみ定義されていた TBL1(C1,C2,C3) 値がすべて同じ列 (C1) がインデクス構成列の先頭 主キーによる検索を実施 しかし 性能が出なかった 原因は? PK インデクスの第 2 構成列 C2 は 条件で未使用のため 検索範囲の絞り込みは 第 1 構成列でのみ実施した TBL1 第 1 構成列 C1 は 値がすべて同じだったため インデクス全範囲を検索となり遅かった 図 例外的な事例 14

16 インデクスを有効に使う記述 探索条件と複数列インデクスのサーチ範囲 上段 インデクスのサーチ範囲 インデクス (C1, C2, C3) 下段 探索条件を満たす範囲 C1 アアアアアアアアアアアアイイイイイイイイイイイイウウウウウウウウウウウウエエエエ 上段と下段の差が大きい 効率悪 C2 C3 A A A A B B B B C C C C A A A A B B B B C C C C A A A A B B B B C C C C A A A A C1= イ AND C2= B AND C3= 2 C1= イ AND C2= B C1= イ C1= イ AND C2= B C1= イ AND C2>= B AND C3>=2 AND C3>=2 C1= イ AND C2>= B AND C3= 2 C1= イ AND C2>= B C1= イ AND C2>= B AND C3<=2 C1>= イ AND C2= B AND C3= 2 C1>= イ AND C2= B AND C3>=2 C1>= イ AND C2= B C1>= イ AND C2= B AND C3<=2 C1>= イ C2= B AND C3= 2 C2= B C3= 2 ( 注 ) 表の下 3 つは リーフページのフルスキャンになり 特に効率が悪いです 15

17 インデクスを有効に使う記述 2-3 条件式での列演算の使用上の注意 (1) Point FROM 句の ON WHERE 句の探索条件において 列をスカラ演算しない ( 列を計算式の中に組み入れない ) 条件式に変換可能な場合 列をスカラ演算しないこと スカラ演算した条件はインデクスで評価されません または SQL 最適化オプションに スカラ演算を含むキー条件の適用 を指定した場合は インデクスのキー条件で評価しますが効率的に絞り込めません 例を図 に示します 例 1 ~ WHERE TANKA > ~ WHERE TANKA > 950 列を直接演算しない 例 2 ~ WHERE JDATE1 = '2002' AND JDATE2 = '0301' ~ WHERE (JDATE1, JDATE2) = ('2002','0301') 行値構成子で記述すれば効率よくインデクスを使用できる ~ WHERE JDATE1 JDATE2 = ' ' 図 スカラ演算の例その 1 列を連結して判定しない 16

18 インデクスを有効に使う記述 条件式での列演算の使用上の注意 (2) 例 3 ~ WHERE SNAME LIKE 'TOKYOU%' ~ WHERE SUBSTR(SNAME, 1, 6) = 'TOKYOU' 先頭文字比較は LIKE を使用する 例 4 ~ WHERE TANKA = 5 ~ WHERE TANKA * 12 = 60 列を直接演算しない 例 5 ~ (SNAME = 'xxx' AND ZSURYO = 1) OR (SNAME = 'yyy' AND ZSURYO <> 1) CASE 式を使用しない ~ SNAME = CASE WHEN ZSURYO = 1 THEN 'xxx' ELSE 'yyy' END 図 スカラ演算の例その 2 17

19 インデクスを有効に使う記述 2-4 条件式での変数 / 定数へのスカラ演算の使用上の注意 Point FROM 句の ON WHERE 句の探索条件において 変数をスカラ演算しない ( 変数を計算式の中に組み入れない ) 定数をシステム定義スカラ関数 ユーザ定義関数の引数に指定しない 変数をスカラ演算した条件はインデクスで評価されません または SQL 最適化オプションに スカラ演算を含むキー条件の適用 を指定した場合は インデクスのキー条件で評価しますが効率的に絞り込めません 定数をシステム定義スカラ関数 ユーザ定義関数の引数に指定した場合は 一切インデクスが使用されません 例を図 に示します 変数のスカラ演算 ~ WHERE SNAME =?? パラメタに値を渡す埋込み変数は あらかじめ CHAR(5) のデータとしておく ~ WHERE SNAME = CAST(? AS CHAR(5)) 定数のシステム定義スカラ関数 ~ WHERE SNAME = 'ABC' ~ WHERE SNAME = RTRIM('ABC ') 変数をスカラ演算しない あらかじめ必要な演算を実施した定数を指定する RTRIM は システム定義スカラ関数 図 変数 / 定数へのスカラ演算の例 18

20 インデクスを有効に使う記述 2-5 中間一致の回避 Point LIKE 述語は中間一致 ('%xx%') 後方一致 ('%xxx') を避け 極力前方一致 ('xxx%') になるように記述すること LIKE '%c%' でも インデクスを使用しますが ( 場合によっては使用しない ) インデクスのリーフページをフルスキャンします LIKE は LIKE 'c%' や LIKE 'c_' のように前方一致を指定すればインデクスの参照範囲を絞り込むことができるため 処理性能が向上することが多いです 例を図 に示します ~ WHERE SNAME LIKE 'TOKYOU%' ~ WHERE SNAME LIKE 'TOK%OU' ~ WHERE SNAME LIKE 'TOK ' 前方一致を用いる ~ WHERE SNAME LIKE '%KYO%' ~ WHERE SNAME LIKE '%KYOU' ~ WHERE SNAME LIKE ' YOU' 中間一致 後方一致は避ける ~ WHERE SNAME LIKE '_O_Y_U_' 図 LIKEの例 LIKE 述語のパターン文字列として? パラメタや埋込み変数を指定した場合も 上記の例のように 設定するパターン文字列を前方一致になるようにすると良いです 19

21 インデクスを有効に使う記述 2-6 複数列インデクスでの前方不一致検索の回避 Point 複数列インデクスの先頭構成列の条件を指定せず 第 2 構成列以降の条件を指定することは避ける 複数列インデクスで前方不一致検索 ( インデクス構成列の前方の列を指定しない ) を行うと インデクスのリーフページをフルスキャンします 例を図 に示します インデクスは以下の複数列インデクス X01(ZSURYO,COL) ~ WHERE ZSURYO = 20 AND COL = 'blue' ~ WHERE COL = 'blue' AND ZSURYO = 20 ~ WHERE ZSURYO = 20 ~ WHERE COL = 'blue' インデクス構成列の順と探索条件指定順は一致しなくて良い インデクスの先頭構成列のみ指定でも良い インデクスの後方構成列のみ指定 ( リーフページのフルスキャン ) 図 複数列インデクス例 20

22 インデクスを有効に使う記述 2-7 インデクス列のみ選択の使用 Point 選択式に指定する列は 必要最小限にし さらにインデクス構成列のみ指定すると高速化できる 問合せ指定でインデクス列のみを選択すると インデクス列の値は表からではなく 直接インデクスから読み込まれるため 非常に高速に処理できます ( インデクスページのみの読み取りで データページは読みません これをキースキャンと呼びます ) 例を図 に示します インデクスは以下の複数列インデクス X01(ZSURYO,COL) SELECT ZSURYO, COL FROM ZAIKO WHERE ZSURYO < 100 ; 選択式も 探索条件もインデクス構成列のみ指定すると非常に高速 図 インデクス列のみ選択の例 このことにより 探索条件に通常は指定しない列であっても 複数列インデクスに追加することによってパフォーマンスが向上する場合があります ただし 列サイズが小さく頻繁に使用される場合のみ使用し 更新性能に十分注意してください 21

23 インデクスを有効に使う記述 2-8 行値構成子の利用 (1) Point 複数列の組み合わせにて大小比較する場合は行値構成子を用いる 複数列の大小比較をする場合 以下のような指定を行うとインデクスの使用効率が悪くなります 行値構成子を用いれば インデクスを効率よく利用することができます 複数列を組み合わせての大小比較は and と or の条件を組み合わせることにより記述できますが インデクスの使用効率が悪くなり性能上不利になります 例を図 に示します 連結演算を用いた大小比較が可能であった場合でも インデクスの使用効率が悪くなり性能上不利になります 例を図 に示します 以下の複数列インデクスは定義済み X01(CODE, SUBCODE) CODE SUBCODE の組み合わせにて大小比較する場合 ~ WHERE (CODE, SUBCODE) > (100, 50) ~ WHERE CODE > 100 OR (CODE = 100 AND SUBCODE > 50) (100, 50) よりも大きいものを検索する 行値構成子を使用すると 複数列インデクスで直接評価ができ効率が良い 図 行値構成子の使用例その 1 22

24 インデクスを有効に使う記述 行値構成子の利用 (2) 以下の複数列インデクスは定義済み X02(XDATE, XTIME) XDATE XTIME の組み合わせにて大小比較する場合 ~ WHERE (XDATE, XTIME) > (' ', '223000') (' ', '223000') よりも大きいものを検索する 行値構成子を使用すると 複数列インデクスで直接評価ができ効率が良い ~ WHERE XDATE XTIME > ' ' 図 行値構成子の使用例その 2 連結演算などのスカラ演算を含むとインデクスの使用効率が悪い 23

25 インデクスを有効に使う記述 2-9 完全一致に LIKE は用いない Point 完全一致の検索の場合は LIKE 述語でなく = 述語を用いる LIKE 述語にて完全一致の検索を行う場合は固定長文字列でもデータ長が等しいものしか一致しない ( 空白を補完しない ) ことも認識してください 例を図 に示します 列定義は以下 SNAME CHAR(30) ~ WHERE SNAME = 'ABCD' ; = 述語の場合 列長に合わせて変数の値に空白を補完するため 長さが異なっても検索できる ~ WHERE SNAME LIKE 'ABCD' ; 固定長文字列 SNAMEの長さとLIKE 述語 に指定した文字列の長さが不一致の場合 検索できない 図 LIKE の完全一致は用いない 24

26 インデクスを有効に使う記述 2-10 任意の複数条件を組み合わせた自由検索の注意 Point 任意の複数条件を組み合わせた検索で LIKE 述語を使用して検索条件に汎用性を持たせない LIKE のパターン文字列を変数として 実行時に変数に完全一致の文字列または '%' を与えることにより一つの SQL にて任意の複数条件を組み合わせた自由検索が実現可能ですが インデクスの使用効率が悪くなり性能劣化となるので このような指定は避けてください このような場合は 条件ごとにそれぞれの SQL を記述したり 動的 SQL を組み立てたりして UAP にて使用する SQL を選択してください 例を図 に示します 検索を有効にしたい列を事前に判定し 条件に有効にしたい列だけを指定した SQL で 検索を行う SNAME の条件と SCODE の条件のアドホックな検索において : SNAME の条件だけを有効にしたい場合 ~ WHERE SNAME = :X1 ; SCODE の条件だけを有効にしたい場合 = 述語として不要な条件 (SCODE の条件 ) を指定しない なお SQL オブジェクトキャッシュのヒット率を上げるために定数でなく変数を用いる ~ WHERE SCODE = :X2 ; 図 複数の LIKE 条件を組み合せて使用しないその 1 25

27 インデクスを有効に使う記述 任意の複数条件を組み合わせた自由検索の注意 検索を有効にしたい列に定数を 有効にしない列に % を設定し LIKE を使用した SQL を発行している 有効にしない列も検索対象となるため インデクスの使用効率が悪くなる ~ WHERE SNAME LIKE :X1 AND SCODE LIKE :X2 ; SNAME の条件だけを有効にしたい場合 X1 = 'ABCD' X2 = '%' SCODE の条件だけを有効にしたい場合 X1 = '%' X2 = '1234' 図 複数の LIKE 条件を組み合せて使用しないその 2 26

28 インデクスを有効に使う記述 2-11 NOT(!=) のインデクスの使用上の注意 Point インデクスを使用して範囲が絞り込めるならば NOT(!=) は使用しない インデクスで範囲を絞り込めるように条件の指定ができるならば NOT(!=) を指定しないでください NOT(!=) を使用すると インデクスを使用した検索を行わないことが多いです インデクスを使用するための NOT(!=) に関する例を図 に示します ~ WHERE DNO > 0 DNO に負数がない場合 ~ WHERE DNO!= 0 図 インデクス定義列での NOT(!=) の変形例 インデクスを使用して範囲をあまり絞り込めないなど インデクスを用いたくない場合に NOT(!=) を用いてください 27

29 インデクスを有効に使う記述 ORDER BY 句 GROUP BY 句の 2-12 インデクスソートキャンセル (1) Point ORDER BY 句 GROUP BY 句は インデクスを利用できるように工夫する ORDER BY 句の順序性は インデクスを使用することでソート処理を行わずに保証できるため 性能向上が期待できます また GROUP BY 句に対しても インデクスを使用しソート処理 / ハッシュ処理を行わずにグループ化できるため 性能向上が期待できます これをインデクスソートキャンセルと呼びます インデクスソートキャンセルにするために 以下のすべての条件を満たすようにしてください 1ORDER BY 句 /GROUP BY 句に指定する列のすべてが 同じ順序で一つのインデクスの第 1 構成列から連続しているかまたは連続しない場合には インデクス構成列の連続しない列に = 述語 ( 列 = 値指定 ) または IS NULL 条件列を探索条件に指定している 2ORDER BY 句の ASC/DESC 指定と インデクス定義時の構成列の ASC/DESC 指定が同じか まったく逆 ( 本項目は GROUP BY には該当しない ) 3 インデクスが複数の RD エリアに分割されていない (HiRDB/ パラレルサーバの場合は 1 つのサーバ (BES 内 ) で複数の RD エリアに分割されていない ) < 補足事項 > 探索条件中にインデクス構成列に対する絞り込みがあるか または選択式がインデクス構成列のみで構成されている場合は よりインデクスソートキャンセルを適用できます 28

30 インデクスを有効に使う記述 インデクスソートキャンセル (2) インデクスが複数の RD エリアに分割されていない場合 ORDER BY 句 GROUP BY 句の インデクスソートキャンセルとなる例を図 に示します インデクスは以下の複数列インデクス X01(SNAME ASC, ZSURYO DESC, DNO ASC) SELECT ZSURYO, DNO FROM ZAIKO WHERE SNAME = 'A' ORDER BY ZSURYO DESC, DNO ASC; SELECT ZSURYO, DNO FROM ZAIKO ORDER BY SNAME ASC, ZSURYO DESC, DNO ASC; SELECT ZSURYO, DNO FROM ZAIKO ORDER BY SNAME DESC, ZSURYO ASC, DNO DESC; 図 インデクスソートキャンセルの例 = 述語はインデクスの第 1 構成列を指定 ORDER BY はインデクスの第 2 構成列から連続して指定している 選択式はインデクス構成列のみ ORDER BY 指定列がインデクスの第 1 構成列から連続して指定する ASC/DESC がすべて逆 29

31 インデクスを有効に使う記述 ORDER BY 句 GROUP BY 句の インデクスソートキャンセル (3) インデクスソートキャンセル不可となる例を図 に示します インデクスが複数の RD エリアに分割されていない場合 SELECT ZSURYO, DNO FROM ZAIKO WHERE SNAME = 'A ORDER BY ZSURYO ASC, DNO ASC; SELECT ZSURYO, DNO FROM ZAIKO WHERE SNAME = 'A ORDER BY DNO ASC, ZSURYO ASC; SELECT ZSURYO, DNO FROM ZAIKO WHERE SNAME = 'A ORDER BY DNO ASC; SELECT ZSURYO, DNO FROM ZAIKO ORDER BY SNAME ASC, ZSURYO DESC, DNO ASC, COL ASC ; インデクスは以下の複数列インデクス X01(SNAME ASC, ZSURYO DESC, DNO ASC) 図 インデクスソートキャンセルの不可の例その 1 ASC/DESC が一致しない 2 の条件にあてはまらない例 ORDER BY 指定順序とインデクス構成列順が異なる 1 の条件にあてはまらない例 ORDER BY 指定列がインデクスの第 1 構成列から連続せず 欠落列の = 述語指定もない 1 の条件にあてはまらない例 ORDER BY 指定列にインデクスで定義されてない列がある 1 の条件にあてはまらない例 30

32 インデクスを有効に使う記述 ORDER BY 句 GROUP BY 句の インデクスソートキャンセル (4) 一つのサーバ内でインデクスが複数の RD エリアに分割されている場合 インデクスは 以下 X01(SNAME ASC, ZSURYO DESC, DNO ASC) IN(RDA1, RDA2, RDA3); SELECT SURYO, DNO FROM ZAIKO ORDER BY SNAME ASC, ZSURYO DESC, DNO ASC; インデクスが複数の RD エリアに分割されている 3 の条件にあてはまらない例 図 インデクスソートキャンセルの不可の例その 2 31

33 インデクスを有効に使う記述 2-13 集合関数 MAX/MIN の引数の注意 Point 一つの SQL に 異なる列を引数とする MAX MIN を同時に指定しない ひとつの SQL に異なる列を引数とする集合関数 MAX MIN を同時に指定すると インデクスを使用せず MAX MIN の値を求めるため性能が悪くなります 違う引数の MAX MIN は SQL を分け 引数にインデクスの第 1 構成列を指定してください 例を図 に示します インデクスは X01(ZSURYO, DNO) X02(DNO) SELECT MAX(ZA.ZSURYO) FROM ZAIKO ZA; SELECT MIN(ZA.DNO) FROM ZAIKO ZA; SELECT MAX(ZA.ZSURYO), MIN(ZA.DNO) FROM ZAIKO ZA; 異なる列の MAX と MIN の SQL 文を分けて指定する なお 各列は第 1 構成列となるようにインデクスを定義する 一つの SQL にて MAX と MIN の引数に異なる列を指定している 図 インデクスの構成列を MAX,MIN の引数に指定した例 32

34 3. 副問合せに関する記述 副問合せは SQL の構文ベースでアクセスパス ( 処理手順 ) がほぼ決まるため 副問合せを使用する場合は書き方によって大きく性能が異なります よって 適切に使用するように心掛けてください 33

35 副問合せに関する記述 3-1 副問合せの使用方針 # 方針メリット 副問合せを使用する場合は 以下の順に考慮して使用すると良いです ジョインで記述可能な SQL は副問合せを使用せず ジョインで記述する FROM 句の副問合せは使用しない IN 副問合せ (=ANY 副問合せ ) と EXISTS 副問合せは 絞り込みによって使い分ける IN 副問合せ (=ANY 副問合せ ) と = 副問合せは 副問合せのヒット件数が 1 件かどうかで使い分ける NOT IN 副問合せ (<>ALL 副問合せ ) はなるべく使用しない 検索順序 データの突合せ方法を HiRDB が最適化できるので SQL 構文をあまり考えなくて良い 検索順序 データの突合せ方法 絞り込みのインデクスを HiRDB が最適化できるので SQL 構文をあまり考えなくて良い 絞り込みを伝播できるようになりデータの処理量が削減できる インデクスを効率よく使用できるようになり データの処理量が削減できる NOT を含むとデータ処理量が多くなるが NOT IN は特に重いので避ける 34

36 副問合せに関する記述 3-2 副問合せよりもジョインを使用する (1) Point 副問合せを用いない SQL 文に変更可能な場合 なるべく副問合せを使用しない IN 副問合せ ANY 副問合せ ALL 副問合せでは作業表を作成します また 副問合せだと表の検索順序が限られるため 最も効率の良い順序で表を検索することができず 表の結合で記述したほうが処理の性能が向上することが多いです IN 副問合せ =ANY 副問合せは 結合で記述できます 図 図 に 副問合せを解消できる例を示します SELECT ZA.SNAME FROM JUTYU DE, ZAIKO ZA WHERE DE.DNO = ZA.DNO AND ZA.ZSURYO = 20 ; SELECT ZA.SNAME FROM ZAIKO ZA WHERE DNO IN ( SELECT DE.DNO FROM JUTYU DE) AND ZA.ZSURYO = 20 ; 図 副問合せを使用しない SQL 例その 1 副問合せを使用しないで 表結合で実現 (DE.DNO の値に重複がある場合は注意が必要 ) 副問合せを使用すると 作業表オーバヘッド さらにインデクスが使えなければ直積相当の負荷がかかる ZAIKO 表を先に検索して絞り込みを伝播させた方が良いが JUTYU 表を絞り込まずに先に検索してしまう 35

37 副問合せに関する記述 副問合せよりもジョインを使用する (2) SELECT ZA.SNAME FROM JUTYU DE, ZAIKO ZA WHERE DE.DNO = ZA.DNO AND DE.TCODE = 'A' ; 副問合せを使用しないで 表結合で実現 (DE.DNO の値に重複がある場合は注意が必要 ) SELECT ZA.SNAME FROM ZAIKO ZA WHERE EXISTS ( SELECT * FROM JUTYU DE WHERE DE.DNO = ZA.DNO AND DE.TCODE = 'A') ; 外への参照あり副問合せでは 外側問合せを先に検索する ゆえに 外側問合せにデータの絞り込みが無ければ 表の全件の突合せが実施され負荷が高い 図 副問合せを使用しない SQL 例その 2 36

38 副問合せに関する記述 3-3 FROM 句の副問合せの使用上の注意 (1) Point FROM 句の副問合せはなるべく用いない FROM 句の副問合せを指定すると 内部導出表を作成することが多くなります 内部導出表を作成した場合 以下のような点で性能が悪くなるため FROM 句の副問合せはなるべく用いないでください 例を図 に示します 内部導出表は FROM 句の副問合せ結果で作成する作業表であるため 作業表への I/O が発生する 内部導出表を作成すると 外側問合せに指定した探索条件は FROM 句の副問合せ結果で作成する作業表の作成後に評価するため インデクスが用いられない SELECT B.SNAME FROM JUTYU A, ZAIKO B WHERE A.DNO = B.DNO AND A.TCODE = 'A' ; DNO のインデクスを用いたネストループジョインとなる SELECT B.SNAME FROM (SELECT DNO, TCODE FROM JUTYU WHERE TCODE='A') A, (SELECT DNO, SNAME FROM ZAIKO) B WHERE A.DNO = B.DNO ; 図 FROM 句に副問合せを使用しない SQL 例 内部導出表を作成する DNO にインデクスを定義していても使用しない 37

39 副問合せに関する記述 FROM 句の副問合せの使用上の注意 (2) FROM 句の副問合せの書き換えで性能向上した例を図 に示します SELECT P.* FROM TBL2 T2, (SELECT T1.*, VALUE(T1.C1S, T1.C1L, 0) C1 FROM TBL1 T1 ) P WHERE T2.TBL1ID = P.ID AND P.C1 BETWEEN T2.C2 AND T2.C3 AND T2.TBL2ID =? マージジョイン FROM 句の副問合せ 作業表相手だとマージジョインのみ 内部導出表 SELECT T1.*, VALUE(T1.C1S, T1.C1L, 0) C1 FROM TBL2 T2, TBL1 T1 WHERE T2.TBL1ID = T1.ID AND VALUE(T1.C1S, T1.C1L, 0) BETWEEN T2.C2 AND T2.C3 AND T2.TBL2ID =? ネストループジョイン 演算は展開する TBL2 作業表 P 絞り込まれず全件検索 TBL2 TBL1 TBL2ID =? で絞り込んだが絞り込みを伝播できず性能劣化 TBL1 TBL2ID =? で絞り込んだ絞り込みを伝播 実表の検索であれば 結合条件のインデクスで絞り込んで検索 図 FROM 句の副問合せの書き換えでの性能向上例 38

40 副問合せに関する記述 3-4 IN 副問合せと EXISTS の使い分け Point 副問合せ内を絞り込める場合は 外への参照なし IN 副問合せを使用する副問合せより外側問合せが絞り込める場合は 外への参照あり EXISTS を使用する 副問合せで記述する場合には 外への参照あり / なしによって 外側問合せと副問合せのどちらを先に検索するかが変わります 外への参照ありは外側問合せを先に 外への参照なしは副問合せを先に検索します そのため 絞り込める問合せを先に検索するように 外への参照あり / なしを考える必要があります 外への参照ありで記述する場合は EXISTS 述語の副問合せを使用してください 外への参照なしで記述する場合は IN 述語の副問合せを使用してください 例を図 に示します SELECT ZA.SNAME FROM ZAIKO ZA WHERE ZA.DNO IN ( SELECT DE.DNO FROM JUTYU DE WHERE DE.TCODE = 'A') ; SELECT ZA.SNAME FROM ZAIKO ZA WHERE EXISTS ( SELECT * FROM JUTYU DE WHERE DE.DNO = ZA.DNO) AND ZA.SNAME = 'A' ; 外への参照無し IN の場合は ZA.DNO にインデクスを定義して 副問合せから外側問合せへ突き合わせる 副問合せ内が絞り込める場合は 外への参照なし IN にて 副問合せを先に検索したほうが良い DE.DNO にインデクスを定義して 外側問合せから副問合せへ突き合わせる 外側問合せが絞り込める場合は 外への参照あり EXISTS にて 外側問合せを先に検索したほうが良い 図 外への参照なし IN と 外への参照あり EXISTS の使い分け 39

41 副問合せに関する記述 IN 副問合せと EXISTS の使い分け ( 解説 ) 解説 外への参照有無により 先に検索する表が変わります 絞り込める表から検索できるように 外への参照有無を使い分けます 外への参照無し IN 副問合せ SELECT ZA.SNAME FROM ZAIKO ZA WHERE ZA.DNO IN ( SELECT DE.DNO FROM JUTYU DE WHERE DE.TCODE = 'A' ) ; DNO ZAIKO 作業表 2 外側問合せ検索 TCODE='A' TCODE JUTYU 1 副問合せ検索 外への参照あり EXISTS 副問合せ SELECT ZA.SNAME FROM ZAIKO ZA WHERE EXISTS ( SELECT * FROM JUTYU DE WHERE DE.DNO = ZA.DNO) AND ZA.SNAME = 'A' ; SNAME='A' SNAME DNO ZAIKO JUTYU 1 外側問合せ検索 2 副問合せ検索 40

42 副問合せに関する記述 3-5 IN 副問合せと = 副問合せの使い分け Point 副問合せ内で 1 件しかヒットしない場合は = 副問合せを使用する 主キーを探索条件の = 条件で指定する場合など 副問合せ結果が 1 件であることが自明な場合は IN 副問合せ (=ANY 副問合せも同様 ) を使用せず = 副問合せを使用してください = 副問合せであれば 作業表の作成が不要なこととインデクスが自由に使用できることから 高速化できます 例を図 に示します JUTYU 表の主キー :JUTYU(TCODE) SELECT ZA.SNAME FROM ZAIKO ZA WHERE ZA.DNO = ( SELECT DE.DNO FROM JUTYU DE WHERE DE.TCODE = 'A' ) ; ZA.DNO にインデクスを定義して 副問合せから外側問合せへ突き合わせる SELECT ZA.SNAME FROM ZAIKO ZA WHERE ZA.DNO IN ( SELECT DE.DNO FROM JUTYU DE WHERE DE.TCODE = 'A' ) ; 図 IN 副問合せと = 副問合せの使い分け 副問合せが 1 件しかヒットしないときは IN を使用せず = を使用する 主キーであるので 1 件しかヒットしない 41

43 副問合せに関する記述 IN 副問合せと = 副問合せの使い分け ( 例 ) CREATE VIEW VIEW1 AS 1 件しかヒットしな SELECT * FROM TBL1 いので=でよい WHERE CCODE2 = (SELECT CCODE2 FROM TBL2 WHERE CNAME = 'NAME1') ; 主キー CREATE VIEW VIEW1 AS SELECT * FROM TBL1 WHERE CCODE2 IN (SELECT CCODE2 FROM TBL2 WHERE CNAME = 'NAME1') ; SELECT T3.CID AS C1_ 主キー FROM TBL3 T3 INNER JOIN VIEW1 T1 ON T3.CCODE1 = T1.CCODE1 WHERE ( T3.CID = 'A01' ) ; IN 副問合せではネストループジョインと同時に評価できず 探索範囲が広がる TBL3 TBL1(CCODE1, CCODE2) のインデクスネストループジョイン インデクスで大量データがヒットし性能劣化 TBL1 ビュー表定義を = 副問合せに変更して インデクスでの絞り込みができるようにした 図 IN 副問合せと = 副問合せの使い分け例 42

44 副問合せに関する記述 3-6 NOT IN の代用としての NOT EXISTS の使用 Point なるべく NOT IN 副問合せよりも NOT EXISTS 副問合せを用いる 表の結合では表現できないものは 副問合せで記述します 副問合せを使用するときは なるべく外への参照を行わないようにするのが望ましいですが 外への参照を行わなくても NOT IN の場合は内部的な直積が発生するため注意が必要です 処理性能の向上のためには NOT IN を用いるよりも 外への参照をしてでも NOT EXISTS で置き換えた方が良いことが多いです 基本的には NOT IN を使用しないようにしますが 下記例で SNAME='A' が絞り込めず かつ副問合せの検索行数が極端に少ない場合は NOT IN を用います 絞り込める場合は NOT EXISTS を使用します ただし このような検索は一般的に処理負荷が高いのでなるべく避けるのが望ましいです SELECT ZA.SNAME FROM ZAIKO ZA WHERE NOT EXISTS ( SELECT * FROM JUTYU DE WHERE DE.DNO = ZA.DNO) AND ZA.SNAME = 'A' ; 小さく絞り込める場合 SELECT ZA.SNAME FROM ZAIKO ZA 副問合せ検索行数が少ない WHERE ZA.DNO NOT IN ( SELECT DE.DNO FROM JUTYU DE) AND ZA.SNAME = 'A' ; あまり絞り込めない場合 図 外への参照なし NOT IN と 外への参照あり NOT EXISTS の使い分け 43

45 4. 結合検索に関する記述 結合検索を使用する場合 書き方によっては処理負荷が高くなります 処理負荷が高くならないようにする SQL コーディングについて示します 44

46 結合検索に関する記述 4-1 表の結合 (1) Point 表の結合は 次の点に注意してください 不必要な表を結合しない 結合条件は =( 等号 ) 条件を指定する 結合条件にスカラ演算等の演算を使用しない 結合条件を OR 論理演算しない HiRDB/ パラレルサーバの外結合は 表の分割列を結合条件に指定するようにする 表の結合で 処理負荷がかからないように 以下に示すように指定してください 1 結合処理は 一般的に結合表数が増えるほど処理負荷が高くなるので 結合する表数は少なくなるように工夫する 2 表の結合は ネストループジョインになるように設計する あまり絞り込まないで結合を行うことが必要な場合は ハッシュジョインになるよう設計する 極力直積 マージジョインにならないようにする これらは 外結合 (LEFT OUTER JOIN) にも該当する 3 結合条件にはデータを絞り込めるように =( 等号 ) 条件を指定する 4 結合条件にスカラ演算等の演算を使用しないようにする スカラ演算等は直積で処理するため処理負荷が高くなる 5 結合条件をOR 論理演算しないようにする OR 論理演算すると直積で処理するため 処理負荷が高くなる 6 絞り込める条件の列と 対する表の結合条件の列にインデクスを定義する 7HiRDB/ パラレルサーバで外結合を行う場合は 表の分割列を結合条件に指定するようにする 分割列を結合条件に指定しないと ネストループジョインにならなくなる (HiRDB/ シングルサーバ およびHiRDB/ パラレルサーバでも非分割表の場合は問題ない ) 45

47 結合検索に関する記述 表の結合 (2) 結合条件を OR 論理演算しないようにする例を図 に示します 図 に示す方法が適用できない場合は 集合演算 (UNION ALL) を用いる方法も検討する SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.DNO = ZA.DNO AND (ZA.ZSURYO = 0 OR ZA.SNAME = 'A') ; 結合条件を OR 論理演算の外へ括り出す SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE (JU.DNO = ZA.DNO AND ZA.ZSURYO = 0) OR (JU.DNO = ZA.DNO AND ZA.SNAME = 'A') ; 結合条件を OR 論理演算している 図 直積を回避するために結合条件を OR の外へ括り出す例 46

48 結合検索に関する記述 4-2 外結合と内結合の混在 SQL での注意 (1) Point 外結合と内結合を混在する場合には内結合は INNER JOIN 構文で記述するかつ探索条件にて最も絞り込める表を FROM 句の最初に指定する 外結合と内結合の混在 SQL で以下を指定した場合 データが効率的に絞り込めません FROM にカンマで区切り表を書き並べて結合するものと LEFT OUTER JOIN を混在して指定した場合 LEFT OUTER JOIN が先に処理される 探索条件にて絞り込む表が LEFT OUTER JOIN の外表以外であった場合 LEFT OUTER JOIN の外表を最初に検索するため 表のデータが絞り込めない状態で LEFT OUTER JOIN 処理を行うので遅くなる 上記の場合 内結合を INNER JOIN 構文で記述し 探索条件にて絞り込む表を FROM 句の最初に指定します 絞り込んだ表を最初に検索し 少ない行数で結合処理を行うため高速に処理できます なお INNER JOIN 構文 LEFT OUTER JOIN 構文では FROM 句の指定順に結合します 47

49 結合検索に関する記述 外結合と内結合の混在 SQL での注意 (2) 外結合と内結合の混在 SQL でデータを効率的に絞り込める例を図 に示します SELECT A.SURYO, B.SNAME, C.ZSURYO FROM JUTYU A INNER JOIN SYOHIN B ON A.DNO = B.DNO LEFT OUTER JOIN ZAIKO C ON B.DNO = C.DNO WHERE A.TCODE = 'A' ; INNER JOIN にすることで FROM 句の記述順に結合する よって 最初に JUTYU 表を TCODE='A' にて絞り込んで検索する SELECT A.SURYO, B.SNAME, C.ZSURYO FROM JUTYU A, SYOHIN B LEFT OUTER JOIN ZAIKO C ON B.DNO = C.DNO WHERE A.DNO = B.DNO AND A.TCODE= 'A' ; カンマで書き並べた JUTYU 表は LEFT OUTER JOIN の後に結合する LEFT OUTER JOIN を先に処理するため SYOHIN 表を絞り込まないで最初に検索する 図 外結合と内結合の混在 SQL 例 48

50 結合検索に関する記述 4-3 外結合の使用上の注意 Point LEFT OUTER JOIN の内表は ON 条件中にて絞り込む LEFT OUTER JOIN の内表を WHERE 句で絞り込むと (NULL 述語は除く ) INNER JOIN と同じ結果になります また 内表の条件を WHERE 句に指定するとインデクスを使用出来ず 性能が悪くなります ゆえに 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 ; 等価なSQL 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 ; 図 LEFT OUTER JOIN 内表の絞り込み 内表は ON 条件中にて絞り込むインデクスを使用する 内表を WHERE 句で絞り込んでいるインデクスが使用されない INNER JOIN と同じ結果になる 49

51 5. 表の分割に関する記述 分割表を使用することで性能向上が図れます この利点を活かす SQL コーディングについて示します 50

52 表の分割に関する記述 5-1 表の分割とは 解説 表の分割とは 一つの表を特定の列の値を基に複数の領域へ分割して格納し 管理する方法です 分割した表を分割表といい 表を分割するときに指定した特定の列を分割キーといいます SQL 実行時は 探索条件に分割キーを指定すると対象となるデータが格納されている領域を判定し 必要な領域にのみアクセスします 注文日による表の分割の例 分割キー 注文日注文コード商品コード数量 注文履歴表 RDAREA1 ~' ' RDAREA2 ' ' ~' ' RDAREA3 ' ' ~' ' RDAREA4 ' ' ~' ' RDAREA5 ' '~ アプリケーション側では 表の分割 / 非分割を意識しなくてもアクセス可能ですが 分割キーによるアクセス範囲と ( パラレルサーバの )BES 間データ転送方法 (5-1-1 参照 ) を意識することで性能を向上できます 例 ) SELECT 商品コード, 数量 FROM 注文履歴表 WHERE 注文日 = ' ' 検索対象の RD エリアは RDAREA3 のみとなる 表の分割の詳細につきましては マニュアル システム導入 設計ガイド ー 表の設計 を参照してください 51

53 表の分割に関する記述 BES 間データ転送方法 ( パラレルサーバ ) 解説 パラレルサーバで表の結合する際 BES 間のデータの転送をともないます 分割表の結合では 表の分割キーを結合キーに含むことで 効率よく処理できます BES 間データ転送方法の種類 1 対 1 転送 ( 1 TO 1 ) キーレンジ転送 (KEY RANGE) ハッシュ転送 (HASH) ブロードキャスト転送 (BROADCAST) 転送元サーバサーバサーバサーバサーバサーバ 方式 転送先 サーバ サーバ 常に同じ転送先のサーバにデータを転送 サーバ サーバ 分割キーによって転送先サーバを決定 サーバ サーバ すべての転送先サーバにデータをコピーして転送 転送方法の条件 下記の条件をすべて満たす場合 両方の表の分割キー 分割の種類 分割条件 格納先 BES が完全に一致している 両方の表の分割キーが結合キーに含まれている 下記の条件をすべて満たす場合 データ転送先の表がキーレンジ分割表またはハッシュ分割表 転送先の表の分割キーが結合キーに含まれている 分割キーが 結合キーに含まれていない 注 : 分割数が多く 転送元のヒット件数が多いほど 通信および結合オーバヘッドが大きくなり 性能が悪くなる 52

54 表の分割に関する記述 5-2 分割した表に対する検索 RD エリアの特定 Point 分割列に対する探索条件はスカラ演算しない HiRDB は 分割列に対する探索条件が指定された場合には 探索条件に合致するデータが格納された RD エリアを特定して他の RD エリアは検索しないようにすることで性能向上しています しかしながら 分割列に対する探索条件がスカラ演算された場合には 該当表を格納した全 RD エリアを検索するようになり性能向上できません 例を図 に示します ZAIKO 表の分割列が SNAME であった場合 SELECT DNO FROM ZAIKO WHERE SNAME =? ; SELECT DNO FROM ZAIKO WHERE SNAME = CAST(? AS CHAR(5)) ;? パラメタには CHAR(5) に変換した値を入れ CAST 指定を行わない SELECT DNO FROM ZAIKO WHERE SUBSTR(SNAME,1,3) = 'ABC' ; 図 分割列に対する探索条件 53

55 表の分割に関する記述 5-3 結合検索時の検索 RD エリアの特定 Point 結合検索時には分割列に対する探索条件は省略しないで冗長に記述する 一方の表を表の分割列で絞り込み もう一方の表と表の分割列同士で結合した場合でも もう一方の表は全 RD エリアにアクセスします もう一方の表も冗長に表の分割列に対する探索条件を指定することで 両表のアクセスする RD エリアを特定して絞り込むことができるため性能向上します 例を図 に示します JUTYU 表 ZAIKO 表ともに DNO が分割列の場合 SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.DNO = ZA.DNO AND JU.DNO = 10 AND ZA.DNO = 10 ; ZA.DNO の条件を冗長に指定することで ZAIKO 表は一つの RD エリアだけを検索する SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.DNO = ZA.DNO AND JU.DNO = 10 ; 図 分割列に対する探索条件 ZAIKO 表は定義した全 RD エリアを検索する可能性がある 54

56 表の分割に関する記述 < パラレル限定 > 5-4 結合検索での表の分割列と結合条件列の関係 Point 結合検索時に表の分割列で結合できるように表を設計する特に LEFT OUTER JOIN の場合は内表の分割列で結合できるように表を設計する HiRDB/ パラレルサーバにおいて表の結合検索を行う場合 以下に示すように指定してください = 述語の結合条件に表の分割列を含むようにする 各行の結合相手のデータがどの BES * に格納されているか特定できるため高速に処理できる 大量データを保持する表は 分割列を揃えるだけでなく 表の分割数と格納 BES を揃える 結合条件に表の分割列を含まない場合は 以下のような性能低下を招きます 各行の結合相手のデータがどの BES に格納されているかを特定できないため一つの行に対する結合処理を結合相手の表を格納した全 BES コピー転送 (BROAD CAST と呼ぶ ) して実行するようになるので パラレルの効果が得られず分割損が起きる LEFT OUTER JOIN の場合は 外表を全行返すという SQL の仕様上 BROAD CAST が行えなくなり 両方の表の結合列での再配置を行うので BES 間のデータ転送量が増える さらに両方の表の再配置を行うと結合列でのインデクス検索が行えないのでネストループジョイン以外の結合方式となり性能低下を招く 例を図 に示します * DB アクセスサーバ (Back End Server) HiRDB/ パラレルサーバの構成要素の一つです DB へのアクセスや排他制御を実行します 55

57 表の分割に関する記述 < パラレル限定 > 結合検索での表の分割列と結合条件列の関係 JUTYU 表 ZAIKO 表ともに DNO が分割列で ZAIKO 表の DNO と CNO にインデクスが定義されている場合 SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.DNO = ZA.DNO AND JU.CNO = 10 ; SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.CNO = ZA.DNO AND JU.CNO = 10 ; SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.DNO = ZA.CNO AND JU.CNO = 10 ; SELECT ZA.NAME FROM JUTYU JU LEFT OUTER JOIN ZAIKO ZA ON JU.DNO = ZA.CNO WHERE JU.CNO = 10 ; 分割列同士で結合する ( さらに表の分割方法が同じなら ) 1TO1 転送となり最も処理効率が良い 転送先の表の結合列に分割列を含む JUTYU 表のデータを ZAIKO 表の分割に合わせてキーレンジ転送 またはハッシュ転送し効率が良い 転送先の表の結合列に分割列を含まない JUTYU 表データの BROAD CAST 転送が発生し 負荷が高くなる 外結合の転送先の表の結合列に分割列を含まない マージジョインとなり 両表のデータ転送 ZAIKO 表の全件検索 作業表作成 ソート処理が発生し 負荷が高くなる 図 分割列に対する探索条件 56

58 6. DB の件数を考慮した記述 DB アクセス性能は 検索結果件数および検索中 (SQL 実行中 ) にアクセスするデータ件数に大きく依存します この場合の SQL コーディングについて示します 57

59 DB の件数を考慮した記述 6-1 表の件数の取得 Point 表の件数を求めるとき COUNT(*) を使用すること 表の件数を求めるときは 以下を指定してください COUNT(*) を使う このとき可能な限り WITHOUT LOCK NOWAIT を指定する 条件式にはインデクスの定義された列を指定する 例を図 に示します 条件式に指定した列がインデクスの第一構成列でない場合 性能が悪くなることがあります SELECT COUNT(*) FROM ZAIKO WHERE ZSURYO > 10 WITHOUT LOCK NOWAIT ; 件数の取得には COUNT(*) を使用する ZSURYO にインデクスを定義する 図 件数の取得の SQL 例 58

60 DB の件数を考慮した記述 6-2 データの存在有無の取得 Point データの存在チェックには LIMIT を使用すること データの存在チェックを行うときの留意事項を以下に記載します LIMIT 1 を指定して 1 件見つけたら処理を打ち切るようにする 可能な限り WITHOUT LOCK NOWAIT を指定する 条件式と選択式にはインデクスの定義された列を指定する ORDER BY は作業表を作成することがあるため 指定しない 例を図 に示します SELECT ZA.ZSURYO FROM ZAIKO ZA WHERE ZA.ZSURYO = 0 LIMIT 1 WITHOUT LOCK NOWAIT ; ZSURYO にインデクスを定義する 図 存在チェックの SQL 例 59

61 DB の件数を考慮した記述 6-3 NOT(!=) の使用上の注意 Point 絞り込めないとわかっている条件は NOT(!=) を指定する NOT(!=) を使用した条件に対して HiRDB は あまり絞り込めないと判断し結合方法 結合順序を決定します 取り得る値が 1 か 0 だけのフラグなど 2 値しか持たない列は 条件に指定してもあまり絞り込めないので NOT(!=) を使用して条件を指定することで HiRDB は 絞り込めないことを認識できます 3 値以上持つがあまり絞り込めない場合は NOT IN を用いても良いです 例を図 に示します ~ FROM JUTYU JU,ZAIKO ZA WHERE JU.DNO = ZA.DNO AND JU.FLAG!= 1 AND ZA.ZSURYO = 20 JU.FLAG!= 1 とすることで ZA.ZSURYO = 20 のインデクスを確実に使用し ZA から JU へのネストループジョインにて高速に処理する ~ FROM JUTYU JU,ZAIKO ZA WHERE JU.DNO = ZA.DNO AND JU.FLAG = 0 AND ZA.ZSURYO = 20 JU.FLAG は 1 か 0 であり かつ ZA.ZSURYO=20 が絞り込める場合 図 結合を伴う SQL での NOT 使用例 60

62 DB の件数を考慮した記述 6-4 集合演算の使用上の注意 (1) Point 各問合せ指定の述語に指定する値だけが異なるような場合は 集合演算を使用しないようにする UNION/UNION ALL などの集合演算を使用したとき 集合演算で区切られた問合せ指定 (SELECT 文 ) は 別々に表アクセスします また 集合演算を使用すると 作業表を作成することが多いです (UNION ALL のみの集合演算であれば集合演算のための作業表は作成しない ) そのため 集合演算を用いない SQL 文にすると処理性能が向上することが多いです 図 に 単純な場合の例を示します SELECT SNAME FROM ZAIKO WHERE ZSURYO IN (10, 20) ; IN 述語を使用することにより集合演算を使用しない SELECT SNAME FROM ZAIKO WHERE ZSURYO = 10 UNION SELECT SNAME FROM ZAIKO WHERE ZSURYO = 20 ; = 条件の値だけが異なる場合は UNION 等の集合演算を使用しない 図 集合演算を使用しない SQL 文の例 61

63 DB の件数を考慮した記述 集合演算の使用上の注意 (2) Point 結合を伴う SQL で 結合条件を OR 論理演算する必要がある場合は 集合演算を使用する 結合条件を OR 論理演算すると HiRDB は 直積で処理します 直積では 全データの突合せ処理を伴うため 集合演算に変形し OR 論理演算を不要とすることで直積処理が無くなり処理性能が向上することが多いです 例を図 に示します SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.DNO = ZA.DNO UNION ALL SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.ZNO = ZA.ZNO AND JU.DNO!= ZA.DNO ; UNION ALL を利用し 結合条件の OR をなくす UNION ALL で処理できるように工夫する SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE (JU.DNO = ZA.DNO OR JU.ZNO = ZA.ZNO) ; DISTINCT 無し 結合条件を OR 論理演算している 図 直積を回避するために UNION ALL を利用する SQL 文の例 62

64 DB の件数を考慮した記述 集合演算の使用上の注意 (3) SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.TCODE = 'A01' AND JU.DNO = ZA.DNO UNION SELECT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.TCODE = 'A01' AND JU.SURYO = ZA.ZSURYO ; UNION を利用し 結合条件の OR をなくす UNION では重複を排除するため DISTINCT の指定が不要 SELECT DISTINCT ZA.NAME FROM JUTYU JU, ZAIKO ZA WHERE JU.TCODE = 'A01' AND (JU.DNO = ZA.DNO OR JU.SURYO = ZA.ZSURYO) ; DISTINCT 指定有り 結合条件を OR 論理演算している 図 直積を回避するために UNION を利用する SQL 文の例 63

65 DB の件数を考慮した記述 6-5 DISTINCT の使用上の注意 Point DISTINCT は 確実に重複があり 重複を排除する必要がある場合以外使用しない DISTINCTは重複排除のために作業表作成とソートを行います そのオーバヘッドがあるので 必要のないDISTINCTは使用しないでください 重複排除が必要な場合でも 選択式が列指定のみで かつ値の重複が多い場合は GROUP BYを用いてください 例を図 6-5-1に示します GROUP BYを用いた場合 以下の向上が図れます インデクスが定義されていれば インデクスを利用して 重複排除を効率よく行える インデクスを利用できなくても グループ分け高速化機能 * (SQL 最適化オプション ) が適用できれば 処理性能が向上することが多い * SQL の GROUP BY 句を指定してグループ分け処理をする場合 ソートしてからグループ分けをしています これにハッシングを組み合わせてグループ分けすることで高速なグループ分け処理が実現できます SELECT SNAME FROM ZAIKO GROUP BY SNAME ; SELECT DISTINCT SNAME FROM ZAIKO ; 選択式が列のみで 重複が多い場合の重複排除は GROUP BY を用いる 不要な DISTINCT は使用しない 図 重複排除を効率よく行うSQL 文の例 < 補足事項 > GROUP BYを使用する場合 重複排除した結果の行数が1024( クライアント環境定義のPDAGGRデフォルト値 ) を超えるならば PDAGGRに1024より大きい値を指定すると処理性能が向上する場合があります 64

66 DB の件数を考慮した記述 6-6 ビュー表の使用上の注意 (1) Point ビュー表定義で DISTINCT 指定 GROUP BY 指定は注意が必要ビュー表定義で結合表 (LEFT OUTER JOIN/INNER JOIN) 指定は注意が必要 ビュー表定義に DISTINCT GROUP BY 結合表を指定すると 内部導出表を作成することが多くなります ( 内部導出表の作成条件は マニュアル SQL リファレンス を参照 ) ビュー表定義で内部導出表を作成した場合 以下のような点で性能が悪くなります 内部導出表は ビュー定義時の導出問合せ式の結果で作成する作業表であるため 作業表への I/O が発生する 内部導出表を作成すると ビュー表検索時に指定した探索条件は 内部導出表の作成後に評価するため 内部導出表作成時の処理件数が多くなり性能が悪くなる これらは ビュー表だけでなく WITH 句を含めた名前つき導出表すべてに該当します 例を図 に示します 65

67 DB の件数を考慮した記述 ビュー表の使用上の注意 (2) CREATE VIEW V1(DNO, TCODE) AS SELECT DNO, TCODE FROM JUTYU ; SELECT DISTINCT ZA.SNAME FROM V1 V, ZAIKO ZA WHERE V.DNO = ZA.DNO AND V.TCODE = 'A' ; 重複排除が必要な場合は VIEW の外に記述する 内部導出表とならないため この条件は DISTINCT 処理前に評価できる CREATE VIEW V1(DNO,TCODE) AS SELECT DISTINCT DNO,TCODE FROM JUTYU ; SELECT ZA.SNAME FROM V1 V, ZAIKO ZA WHERE V.DNO = ZA.DNO AND V.TCODE = 'A' ; DISTINCT を指定すると内部導出表となる この条件は DISTINCT 処理後に評価する 図 内部導出表とならないビュー表の例その 1 66

68 DB の件数を考慮した記述 ビュー表の使用上の注意 (3) CREATE VIEW V1(SCODE,TCODE) AS SELECT ZA.SCODE, JU.TCODE FROM JUTYU JU, ZAIKO ZA WHERE JU.DNO= ZA.DNO ; SELECT ZA2.SNAME FROM V1 V, ZAIKO2 ZA2 WHERE V.SCODE = ZA2.SCODE AND V.TCODE = 'A' ; ビュー定義では INNER JOIN を使用しない 内部導出表とならないため ビュー定義時の結合処理前に評価できる CREATE VIEW V1(SCODE,TCODE) AS SELECT ZA.SCODE, JU.TCODE FROM JUTYU JU INNER JOIN ZAIKO ZA ON JU.DNO= ZA.DNO ; SELECT ZA2.SNAME FROM V1 V, ZAIKO2 ZA2 WHERE V.SCODE = ZA2.SCODE AND V.TCODE = 'A' ; INNER JOIN を指定すると内部導出表となる場合がある ビュー定義時の INNER JOIN 処理後に評価する 図 内部導出表とならないビュー表の例その 2 67

69 7. 排他に関する記述 HiRDB では検索に対しても共用モードの排他を取得します 不要な排他は取得しないように排他オプションを指定すると性能向上に結びつきます 本章では 排他オプションの適切な指定について記述します 68

70 排他に関する記述 7-1 排他制御 (1) Point 排他オプションはなるべく記述すること 各表の利用方法を考慮し SQL 文ごとに排他制御の記述を行ってください 検索式ごとに排他方法は必ず検討してください 排他オプションの指定がない場合 PDISLLVL に指定されているデータ保証レベルに従います PDISLLVL が省略されていた場合 WITH SHARE LOCK が仮定されるため 他のユーザが更新するとき更新待ち状態になることがあります 排他オプションは 可能な限り WITHOUT LOCK NOWAIT( 排他無し ) を使用し 排他は極力行わないでください 排他オーバーヘッドの削減 (HiRDB 内処理量および排他待ちの軽減 ) となります ただし 一般に検索した行を必ず更新する場合には 検索時に排他を掛けます 例を図 に示します 69

71 排他に関する記述 排他制御 (2) SELECT DNO FROM ZAIKO WITHOUT LOCK NOWAIT ; SELECT DNO FROM ZAIKO WITHOUT LOCK WAIT; SELECT DNO FROM ZAIKO WITH SHARE LOCK; SELECT DNO FROM ZAIKO WITH EXCLUSIVE LOCK; READ UNCOMMITED: 検索したデータを同時に他のユーザが参照 更新可能である COMMIT してないデータを参照できるため ダーティリードが発生する場合がある READ COMMITED: 一度検索したデータを他のユーザからの更新を許す 同一トランザクションで同じデータを再検索しない場合に指定する COMMIT したデータを参照するため ダーティリードが発生しない REPEATABLE READ: 一度検索したデータをトランザクション終了まで 他のユーザからの参照を許すが更新を許さない 検索したデータの再検索を行う場合に指定する REPEATABLE READ: 一度検索したデータをトランザクション終了まで 他のユーザからの参照も更新も許さない 検索したデータを同一トランザクション内で更新する場合に指定する SELECT DNO FROM ZAIKO; 排他オプションの指定がないため PDISLLVL に指定されているデータ保証レベルに従う PDISLLVL が省略されていた場合 WITH SHARE LOCK が仮定されるため 他のユーザが更新するとき更新待ち状態になることがある 図 排他制御オプション 70

72 排他に関する記述 7-2 更新順序の統一 Point 表の更新順序を決めること デッドロックを避けるため 複数の表を更新する場合はシステム内で更新順序を決めてアクセスしてください 例を図 に示します 更新の順序を決めてデッドロックを避ける A 表 B 表 C 表の順番と決めた場合処理 1:A 表更新 B 表更新 C 表更新処理 2:A 表更新 C 表更新処理 3: B 表更新 C 表更新 A 表 B 表 C 表の順番と更新順序を決めた場合 更新の順序を決めてないため 処理 1と処理 3がB 表の同一行を更新する場合とC 表の同一行を更新する場合は デッドロックになる可能性がある処理 1:A 表更新 C 表更新 B 表更新 処理 2:A 表更新 C 表更新処理 3: B 表更新 C 表更新 B 表と C 表の更新順序が不統一 図 表の更新順序 71

73 排他に関する記述 7-3 表単位の排他 Point LOCK 文は 他のトランザクションからの操作を防ぎたい場合に指定を検討する大量更新する場合は 表の操作が単独の実行であっても LOCK 文の指定を検討する LOCK 文は 表単位で他のトランザクションからの検索や更新を抑止できます このため 他のトランザクションからの操作を防ぎたい場合に指定を検討します 同時実行性は失われますが デッドロックの発生を防ぐことができます 大量更新する場合 LOCK 文は行単位の排他より 排他オーバーヘッドや排他資源の節約ができます このため 他のトランザクションが同じ表を操作しないときでも LOCK 文を指定することを検討してください 検索時は SHAREモードで 更新時は EXCLUSIVEモードで表にロックを掛けます 例を図 7-3-1に示します トランザクション開始 LOCK TABLE JUTYU IN EXCLUSIVE MODE ; DELETE FROM JUTYU WHERE JDATE < ' ' ; LOCK 文を発行する 更新時は IN EXCLUSIVE MODE 参照時は IN SHARE MODE ( 注 )SQL Executer などの自動コミットは解除しておく必要がある トランザクション開始 DELETE FROM JUTYU WHERE JDATE < ' ' ; 図 LOCK TABLE 文の使用 大量削除などの大量更新により 排他資源が枯渇しエラーとなる 72

74 排他に関する記述 7-4 FOR UPDATE の使用上の注意 Point 排他取得する目的では FOR UPDATE でなく WITH EXCLUSIVE LOCK を指定する FOR UPDATE は カーソルを使って更新するための検索 または更新中の表を検索するために指定するオプションです 通常は 暗黙的に EXCLUSIVE の排他が掛かりますが クライアント環境変数 PDISLLVL の指定によっては EXCLUSIVE の排他がかからない場合があるので FOR UPDATE を排他オプションの代用にはしないでください 例を図 に示します SELECT C2 FROM T1 WHERE C1 > 0 WITH EXCLUSIVE LOCK ; SELECT C2 FROM T1 WHERE C1 > 0 WITH EXCLUSIVE LOCK FOR UPDATE ; 排他取得だけが目的の場合は 排他オプションのみを指定する 更新前提で排他取得する場合は 排他オプションと FOR UPDATE の両方を指定する SELECT C1 FROM T1 WHERE C1 > 0 FOR UPDATE ; < 補足事項 > 図 検索で EXCUSIVE の排他を取得する場合 クライアント環境定義にPDFORUPDATEEXLOCK=YESを指定すると FOR UPDATE 指定によって 必ず EXCLUSIVEの排他を取得するようになります 他 DBMSからのUAPの移行などで FOR UPDATE 指定時にEXCLUSIVEの排他を適用したい場合は 本指定の検討をしてください バージョン09-50 以降では オペランド省略時動作が推奨モードの時 PDFORUPDATEEXLOCKを省略するとYESが仮定されます 73

75 8. 更新に関する記述 更新処理では二重更新 排他待ちやデッドロックになる場合があります これらを起こさないための SQL コーディングについて示します 74

76 更新に関する記述 8-1 更新 SQL での二重更新に対する注意 (1) Point インデクスを使用して絞り込んだデータに対し そのインデクス構成列の更新をする場合は 更新後の値が探索条件にヒットしないように記載する UPDATE にて更新後の値が インデクスで絞り込んだ範囲に含まれる場合 同一行を二重更新 ( 二回更新 ) することがあります DB の整合性は保たれますが SQL 連絡領域の更新行数には述べ更新行数が通知されます 更新行数を意識するアプリケーションでは 注意してください 例を図 に示します インデクス定義 T1(C1) UPDATE T1 SET C1 = 10 WHERE C1 > 0 AND C1 <> 10 ; UPDATE T1 SET C1 = C WHERE C1 > 0 ; UPDATE T1 SET C1 = 10 WHERE C1 > 0 ; C1 の更新後の値がヒットしないような探索条件を指定する 更新値の指定にスカラ演算を含む場合は 作業表にデータを一旦退避するので二重更新することはない 探索条件で使用するインデクスの構成列を更新する場合は 更新行数が二重にカウントされるので注意が必要 図 UPDATE で探索条件に使用するインデクスを更新する場合 75

77 更新に関する記述 更新 SQL での二重更新に対する注意 (2) カーソルを使った更新でも 同様に二重更新されることがあるので 更新後の値が探索条件にヒットしないようにしてください 例を図 に示します インデクス定義 T1(C1) SELECT C2 FROM T1 WHERE C1 > 0 AND C1 <> 10 WITH EXCLUSIVE LOCK FOR UPDATE ; UPDATE T1 SET C1 = 10 WHERE CURRENT OF カーソル名 ; C1 の更新後の値がヒットしないような探索条件を指定する SELECT C2 FROM T1 WHERE C1 > 0 WITH EXCLUSIVE LOCK FOR UPDATE ; 検索で使用するインデクスの構成列を更新する場合は注意が必要 UPDATE T1 SET C1 = 10 WHERE CURRENT OF カーソル名 ; 図 カーソルを用いた更新で探索条件に使用するインデクスを更新する場合 < 補足事項 > 以下のいずれかの指定の場合 UPDATEで探索条件に使用するインデクス構成列を更新すると 必ず作業表にデータを一旦退避するので 二重更新されることはありません しかし作業表作成のオーバヘッドかかるため 性能が劣化します システム定義に pd_indexlock_mode =KEY ( デフォルトはNONE: インデクスキー値無排他 ) を指定 SQL 最適化オプションから "DETER_WORK_TABLE_FOR_UPDATE"( デフォルトで仮定される : 更新 SQLの作業表作成抑止 ) を外す 76

78 9. アプリケーション上での記述 HiRDB における性能向上 保守性向上のためのアプリケーション記述のガイドラインを示します 77

79 アプリケーション上での記述 9-1 埋込み変数の使用 Point 探索条件の値だけが異なる SQL 文が 2 つ以上ある場合は埋込み変数を利用する DBMS は SQL 文の解析 (SQL オブジェクト作成 ) 実処理の 2 ステップで SQL 文を実行します SQL 文の解析処理を高速化するため SQL 文とその解析結果は SQL オブジェクト用バッファにキャッシュされます 探索条件の値だけが異なる SQL を複数回発行する場合は 埋込み変数を利用し 同一の SQL 文を使いまわすようにします すると HiRDB はキャッシュを使用し SQL の解析処理を省略するため 性能が向上します また 埋込み変数を用いると値が変化する箇所が明確になり 可読性 保守性が向上します 例を図 に示します 動的 SQL の場合は? パラメタを利用してください SELECT SNAME FROM ZAIKO WHERE ZSURYO = :XSURYO ; 埋込み変数にそれぞれ を代入して発行 SELECT SNAME FROM ZAIKO WHERE ZSURYO = 123 ; 別々の SQL 文として発行しない SELECT SNAME FROM ZAIKO WHERE ZSURYO = 987 ; 図 埋込み変数の例 78

80 アプリケーション上での記述 9-2 比較時の型一致 Point 探索条件では 予め比較の型を合わせておく INT 型と DECIMAL 型など 異なる型の列を比較する場合 内部で型の変換処理が発生し オーバヘッドがかかります 無駄な処理を省き 型変換を明示するために予め比較対象の型を合わせておきます 定数指定の場合は HiRDB が SQL 解析時に型変換を行う場合もありますが 埋込み変数などの変数指定時は 各行を評価するごとに型変換処理を行うため 特に注意が必要です 列比較時における型の例を図 に示します ZSURYO は DEC(3) 型 ~ WHERE ZSURYO = :XX XX は DEC(3) 型 ~ WHERE ZSURYO = :YY YY は INT 型 図 列比較時における型の例 79

81 アプリケーション上での記述 9-3 配列 FETCH の使用 Point ヒット件数が多い場合には 配列 FETCH を使用する ヒット件数が多い場合には 配列 FETCH を使用します 配列 FETCH は FETCH 文で INTO 句に配列型の埋込み変数を指定することで複数行取得できます 複数の検索結果の転送をまとめることで 通信量削減による性能向上が期待できます 配列 FETCH を適用できない場合は ブロック転送機能を使用してください 例を図 に示します FETCH カーソル名 INTO : 埋込み変数配列 : 標識変数配列 クライアント環境定義 PDBLKF=50 配列変数にて複数行を一括して FETCH する 複数行の検索結果を一括して転送する 転送行数 50 は適切にチューニングする 図 配列 FETCH ブロック転送の指定例 80

82 アプリケーション上での記述 9-4 表中の全行の削除は PURGE TABLE 文を使用 Point 表中の全行を削除する場合は PURGE TABLE 文を使用する 表のすべての行を削除する場合 PURGE TABLE 文を使用してください PURGE TABLE 文の場合は 表データの管理情報をクリアします このため DELETE 文を実行して一つ一つの行を削除するより 高速に表を空にします また 管理情報をクリアするため 削除した領域は再利用可能となり 使用中空きページが発生しません なお PURGE TABLE 文が成功すると自動的に COMMIT され ROLLBACK できないことに留意してください 例を図 に示します PURGE TABLE ZAIKO ; DELETE FROM ZAIKO ; WHERE 句指定なしの DELETE 文を使用して表中のデータをすべて削除 図 PURGE TABLE 文で表中の全データ削除例 81

83 アプリケーション上での記述 9-5 検索のみのトランザクション処理時の注意 Point 検索のみの処理でもトランザクションが発生するので COMMIT を発行する 検索のみの処理でもトランザクションが発生するので処理単位ごとに COMMIT を発行してください 検索でも排他オプションを指定しない場合は デフォルトで共用排他が行単位に取得されますが COMMIT により開放されます 検索に関しては 無排他検索 (WITHOUT LOCK NOWAIT) にできないかの検討も行ってください 例を図 に示します SELECT ; SELECT ; COMMIT ; : : DISCONNECT ; SELECT ; SELECT ; : : DISCONNECT ; 共用排他の範囲 共用排他の範囲 処理単位で COMMIT を発行すると 排他が開放される COMMIT を発行しないと DISCONNECT まで排他が保持され 更新業務との間で排他待ちが発生する 図 検索のみのトランザクションでの COMMIT の発行例 82

84 10. 保守性を向上させるための記述 SQL 文のリーダビリティを向上させるために SQL 文のコーディング規約を設けます 本章では SQL 文の標準スタイルについて規定します 本章の SQL 例で使用する EMP 表の定義構造を以下に示します 列名 EMP_NO ENAME SAL DEPT_NO データ型 INT NVARCHAR(50) INT INT EMP 表の定義構造 83

85 保守性を向上させるための記述 10-1 キーワード Point 識識別子等の名前は 引用符 (") で囲む 名前を指定する場合 引用符 (") で囲んで指定することを推奨します なお 名前を引用符 (") で囲んだ場合 半角英小文字 及び半角英大文字は区別して扱います 名前には 予約語と同じ名前を指定できませんが 引用符 (") で囲んだ場合は 予約語と同じ名前を指定できます SQL の拡張に伴って システムに登録する予約語を追加する場合があるので 名前はあらかじめ引用符 (") で囲んで指定しておくと 追加した予約語と重複する問題が発生しません ただし 次に示す名前を UAP で使用する場合は SQL の予約語と同じでも引用符 (") で囲まないで指定してください カーソル名 SQL 文識別子 埋込み変数名 標識変数名 ホスト識別子 本ガイドラインの他の例では スペースの都合で引用符 (") を省略しています 84

86 保守性を向上させるための記述 10-2 表名の付与 Point SELECT 文においては ( 単一の表に対する処理でも ) すべての列名を表名 ( または相関名 名称が短くできるため相関名の方が良い ) で修飾すること 表名を付与することにより列が属している表を明確化することができ 可読性 保守性が高まります また同じ表を結合する場合 または副問合せで同じ表の列を参照する場合に備えて 表名として相関名を使用すると良いです 表名付与の例を図 に示します SELECT EM.ENAME, DE.DNAME FROM EMP EM, DEPT DE WHERE EM.DEPT_NO = DE.DEPT_NO AND EM.SAL > 1000 ; SELECT ENAME, DNAME FROM EMP, DEPT WHERE EMP.DEPT_NO = DEPT.DEPT_NO AND SAL > 1000 ; 相関名を付与 列名に表名が無い 相関名を付与 列名に表名が無い 図 列名の接頭辞使用の例 本ガイドラインの他の例では スペースの都合で表名を省略している場合があります 85

87 保守性を向上させるための記述 10-3 列の明示的指定 (1) Point 列の指定を * で省略しないこと不要な列の情報を取得しないこと INSERT 時の列指定を省略しないこと 列の指定時にすべての列を取り出す * を指定すると 解析の処理時間が増大します それだけでなく 列の順番は物理設計 ( 性能 格納効率を考慮し 可変長の列を最後尾に入れ替える ) 列の追加などによって変更される可能性が高く 列の順番に依存した SQL 文はバグの原因となります また無駄な列を指定していれば その分処理 転送時間が増加します 検索時の指定の例を図 に 挿入時の例を図 に示します 86

88 保守性を向上させるための記述 列の明示的指定 (2) SELECT EM.EMP_NO, EM.ENAME FROM EMP EM ; 業務に必要な列のみ参照する SELECT EM.EMP_NO, EM.ENAME, EM.SAL, EM.DEPT_NO FROM EMP EM ; SELECT EM.* FROM EMP EM ; * を使用しない 全列が必要な場合も * を使用せず 明示的に指定 図 SELECT 文における列指定の例 87

89 保守性を向上させるための記述 列の明示的指定 (3) INSERT INTO EMP(EMP_NO, ENAME) VALUES (200007, N' スカート ') ; 全列に挿入しない場合 列指定の省略は不可 INSERT INTO EMP(EMP_NO, ENAME, SAL, DEPT_NO) VALUES (200008, N' ブラウス ', , 1080) ; INSERT INTO EMP VALUES (200008, N' ブラウス ', , 1080) ; 全列に挿入する場合 列指定を省略した悪例 図 INSERT 文における列指定の例 全列に挿入する場合でも 列を明示的に指定する 88

90 保守性を向上させるための記述 10-4 ORDER BY 句における明示的列指定 Point ORDER BY 句では列名を使用すること ASC( 昇順 ),DESC( 降順 ) の指定を省略せず明記すること ORDER BY 句では何列目でソートするかを数字で指定することも可能ですが 列順に依存するため保守性に劣ります よって ORDER BY 句では列名を使用します また ASC( 昇順 ) DESC( 降順 ) の指定を明記してください 例を図 に示します SELECT EM.EMP_NO, EM.ENAME, EM.SAL FROM EMP EM; ORDER BY EM.EMP_NO ASC, EM.SAL ASC ; ORDER BY 句では 列名で指定 SELECT EM.EMP_NO, EM.ENAME, EM.SAL FROM EMP EM ORDER BY 1 ASC, 3 ASC ; ソート順をソート項目指定番号で指定しないこと 図 ORDER BY 句の使用例 89

91 保守性を向上させるための記述 10-5 SQL 文の記述 Point SQL 文の記述は 大文字または小文字のいずれかに統一することが望ましい条件の値が異なるだけの SQL 文は? パラメタ 埋込み変数を用いる 動的 SQL を繰り返し用いる場合 SQL オブジェクトにヒットし SQL の前処理を省略するためには SQL 文の一字一句が大文字小文字も含めてまったく同じである必要があります 条件の値が異なれば SQL オブジェクトがヒットしなくなります よって? パラメタ 埋込み変数を用いることにより SQL オブジェクトにヒットするようにできます? パラメタを用いる例を図 に示します 埋込み変数を用いる例については 9-1 埋込み変数の使用 を参照してください SELECT ZA.ZSURYO FROM ZAIKO ZA WHERE ZA.TANKA >? ; SELECT ZA.ZSURYO FROM ZAIKO ZA WHERE ZA.TANKA > 100 ; 条件の値 100 を など値を変更して繰り返し検索する場合? パラメタを用いる 図 ? パラメタの使用例 90

92 11. おわりに 91

93 11-1 おわりに これからも HiRDB にご期待ください! 92

94 付録 A. SQL の最適化指定 93

95 付録 A-1 使用インデクスの SQL 最適化指定の適用検討 解説 使用インデクスを指示したい場合の SQL 最適化指定の使い方について解説します アプリケーション内で DB をアクセスする場合 SQL 文が使用するインデクスを確認します 通常 HiRDB のオプティマイザが自動的に最適なインデクスを選択しますが 場合によっては 効率の悪いインデクスを選択する場合があります 今後 アプリケーションを変更 ( 新規を含む ) する場合 DB アクセス時に使用するインデクスを SQL トレースで確認し 最適なインデクスが選択されていない場合には 使用するインデクスを明示的に指定する WITH INDEX 句を記述し 使用するインデクスを固定することを推奨します ( オプティマイザと WITH INDEX 句の指定が異なる場合は できるだけ性能測定を行います ) HiRDB が ヒット件数が多くてアクセス効率の悪い場合 SQL 最適化指定の適用を検討する SELECT SNAME FROM ZAIKO WHERE TANKA <= 500 AND ZSURO = 100; インデクス定義 IDX1(TANKA) IDX2(ZSURYO) TANKA で効率よく絞り込める場合 SELECT SNAME FROM ZAIKO WITH INDEX (IDX1) WHERE TANKA <= 500 AND ZSURO = 100; TANKA と AND 条件の ZSURYO でさらに絞り込める場合 SELECT SNAME FROM ZAIKO WITH INDEX (IDX1,IDX2) WHERE TANKA <= 500 AND ZSURYO = 100; 図 A.1-1 WITH INDEX 句を指定した指定例 94

96 付録 A-2 結合方式の SQL 最適化指定の適用検討 解説結合方式を指示したい場合の SQL 最適化指定の使い方について解説します HiRDB のオプティマイザが自動的に効率の良い結合方法を選択しますが 稀に悪い結合方法を選択する場合があります その場合 個別の SQL に効率の良い結合方法をチューニングするために SQL 最適化指定を指定します ただし 指定できるのは INNER JOIN または LEFT OUTER の構文のみです HiRDB のオプティマイザが効率の悪い結合方法を選択した場合の SQL SELECT ZA.ZSURYO, ZA.DNO FROM ZAIKO ZA, JUTYU JU WHERE ZA.ZSURYO = JU.SURYO ; 個別の SQL で結合方式の SQL 最適化指定すると 効率が改善される 個別の SQL で効率の良い結合方式の SQL 最適化指定した場合 SELECT ZA.ZSURYO, ZA.DNO FROM ZAIKO ZA INNER JOIN BY NEST JUTYU JU ON ZA.ZSURYO = JU.SURYO ; SELECT ZA.ZSURYO, ZA.DNO FROM ZAIKO ZA INNER JOIN BY HASH JUTYU JU ON ZA.ZSURYO = JU.SURYO ; SELECT ZA.ZSURYO, ZA.DNO FROM ZAIKO ZA INNER JOIN BY MERGE JUTYU JU ON ZA.ZSURYO = JU.SURYO ; 図 A.2-1 SQL 最適化指定を指定した例 BY NEST を指定してネストループジョインで結合する 絞り込める表を外表に指定する BY HASH を指定してハッシュジョインで結合する ハッシュ表のサイズが小さくなる表を内表に指定する BY MERGE を指定してマージジョインで結合する 95

97 付録 B. 定義に関する記述 96

98 付録 B-1 表の属性 Point NULL 値の利用が不要であり かつ可変長列の使用の必要がない場合は 極力 FIX 表を使用する NULL 値の利用が不要であり かつ可変長列の使用の必要がない場合は 極力 FIX 表を使用します ただし FIX 表にするために 可変長文字列を固定長文字列に変換する場合は DB 容量が増加しないように注意する必要があります FIX 表の場合 以下について向上が図れます FIX 属性を指定していない表と比べて 物理的な行長が 1 列で 2 バイト短くなるので 列数の多い表の場合はディスク所要量を削減できる UAP で行単位インタフェースが使用できるため 列数が多くてもアクセス性能を向上できる 97

99 付録 B-2 列の属性 Point 列属性は 適切なものを指定する A) 十数バイト以下の列または格納されるデータが全行ほぼ同じ長さの場合 CHAR 属性を使用する VARCHAR にはしない B) 小数点以下を使用しない場合は INTEGER を使用する 演算負荷が高いので DECIMAL は使用しない C) 金額のデータには FLOAT を使用しない 誤差が出る D) 半角文字と全角文字が混在して格納される値がある場合に限り混在文字データ型 (MCHAR) を指定する E) 混在文字データ型 (MCHAR) では半角文字 全角文字を意識するオーバヘッドが発生し性能劣化を引き起こすため格納文字種別が半角 / 全角に特定できる場合は文字データ型 (CHAR) 各国文字データ型 (NCHAR) を指定する F) VARCHAR/CHAR 型に全角文字を格納すると LIKE 述語で正しく判定されないので全角文字を格納する場合は NVARCHAR/NCHAR 型または MVARCHAR/MCHAR 型を指定すること G) 実長 256 バイト以上となることが多い文字列データ型の列の定義時には NO SPLIT を指定すると格納効率が向上する バージョン 以降 NO SPLIT を常に適用する H) データ長が長くて非 FIX 表の CHAR MCHAR NCHAR の後方に空白が多い場合に SUPPRESS を指定する スペースを抑止して DB に格納することにより ディスク容量を削減する 98

100 付録 B-3 インデクス定義 Point インデクス設計時には 各種オプションにも留意する A) PRIMARY KEYは主キーを明確にするために有効である しかしPRIMARY KEYのインデクスは インデクス名が自動的に決定されるため インデクス専用グローバルバッファを定義するときは保守性が悪くなる そのため PRIMARY KEYには 専用のインデクス格納用 RDエリアを定義し そのRDエリアにグローバルバッファを定義したほうが良い また PRIMARY KEYのインデクス構成列を変更するためには 表の再定義が必要になるので注意が必要である B) インデクス定義は アクセスするデータを絞り込める条件の列に定義する データページのI/O 回数を大きく削減する C) 各探索条件のパターン 各探索条件によるヒット件数 ソートの有無 更新列 および実行頻度等に基づき インデクスのサーチ範囲 データのアクセス回数を考慮し インデクスの構成列 構成順序 インデクス数を決定する D) インデクスの未使用領域比率の比率指定は データロード後に更新がない場合や キー値が昇順にしか追加されない場合に 0を指定する ディスク容量を節約やバッファの利用効率が良くなる 均等に更新される場合は 更新頻度に応じて未使用領域作成しておくことによって インデクススプリットの発生を抑えることができる E) UNBALANCED SPLITは 連続した中間キー値の追加が頻繁に発生する場合に指定する 最終ページ以外のリーフページの追加位置によって分割位置を変えることで スプリットの発生頻度を削減する 99

101 付録 B-4 表オプション Point 表設計時には 各種オプションにも留意する A) 表の未使用領域の比率の指定 (PCTFREE) データロード後にデータの参照 データ入力のみの場合は 0 を指定することで ディスク容量を削減できる NULL の列にデータを入れるとき 更新してデータが長くなる ( 更新前のデータが NULL または更新後より短い ) 場合 0 以外を指定することで データの格納に乱れがないので性能の劣化を防ぐ B) 表中の DECIMAL データの前 0 サプレス指定 (SUPPRESS) 非 FIX 表で DECIMAL データの定義精度に対してデータ中の前 0 が多い場合に 前 0 を除いて DB 中に格納することによって ディスク容量を削減する C) WITHOUT ROLLBACK 採番のために使用する表 ( 採番管理表 ) では 排他が集中して 同じ実行性が悪くならないように 表定義時に WITHOUT ROLLBACK オプションを指定する 更新完了後は ロールバックされないので 番号が跳ぶ可能性があるので注意する 100

102 付録 B-5 順序数生成子の使用上の注意 Point 採番の方式には複数あり 用途に合ったものを使用する A) 採番には 採番管理表を用いて採番する方法と 自動採番機能 ( 順序生成子を使用する ) を使用する方法がある 自動採番機能は INSERT や UPDATE を実行する場合 採番した値が確認できないので 採番処理中でも採番した値が確認しやすい採番管理表を用いて採番する方法を主に用いる B) 自動採番機能を使用する場合に 採番した値の確認は採番処理が終了した後に検索処理を行なう また 主キーは採番して入力する列とは別の列に定義する C) 順序数生成子の出力間隔は 大きく指定することでログ出力回数が削減されるため 処理性能が向上する 採番管理表を用いて採番を管理する INSERT INTO SEQUENCE_TBL VALUES('T1',1); : DECLARE CUR1 CURSOR FOR SELECT SEQ_NO FROM SEQUENCE_TBL WHERE TABLE_NAME='T1' FOR UPDATE OF SEQ_NO WITH EXCLUSIVE LOCK; : OPEN CUR1 ; FETCH CUR1 INTO :X_SEQ_NO ; UPDATE SEQUENCE_TBL SET SEQ_NO=:X_SEQ_NO +1 WHERE CURRENT OF CUR1 ; CLOSE CUR1 ; : INSERT INTO T1 (DNO,ZNO,SNAME_ID) VALUES(:X_SEQ_NO,104,204); 順序数生成子を用いて採番を管理する INSERT INTO T2(DNO,ZNO,SNAME_ID) VALUES(NEXT VALUE FOR SEQ1,104,204) ; 図 B-5-1 採番の例 採番した値を確認できる 採番管理表の定義 CREATE FIX TABLE SEQUENCE_TBL (TABLE_NAME CHAR(30), SEQ_NO INTEGER )WITHOUT ROLLBACK; 順序数生成子の定義 CREATE SEQUENCE SEQ1 AS INTEGER START WITH 10 INCREMENT BY 10 MAXVALUE 999 MINVALUE 10 CYCLE LOG INTERVAL 10 IN RDDATA10; 採番した値を確認できない 101

103 付録 C. SQL をチューニングするパラメタの定義 102

104 付録 C-1 結合検索に関する記述 (1) ネストループジョインを強制する場合 表を数 % 以下に絞り込んでジョインする場合は ネストループジョインが一番高速です HiRDB は SQL 最適化オプションのデフォルト値にネストループジョイン優先 ("PRIOR_NEST_JOIN") を含んでおり = 述語で絞り込まれたジョインであればネストループジョインするようになっています 何も絞り込まずにジョインする場合などでもネストループジョインを必要とする場合は ネストループジョイン強制 ("FORCE_NEST_JOIN") を SQL 最適化オプションに指定します なお デフォルトで指定される他のオプションを否定しないよう明示指定することに留意してください なお 上記オプションを指定しても以下のいずれかの場合にはネストループジョインとはなりません 結合条件の内表の列にインデクスが定義されない 結合列がインデクスの先頭構成列であるか 先頭構成列から結合列まで連続して = 条件が指定されている必要がある 結合条件には 列 = 列 の条件がない または OR 条件下に指定されている ただし 結合条件の外表がスカラ演算されている場合は SQL 拡張最適化オプションに値式に対する結合条件適用機能 ("APPLY_JOIN_COND_FOR_VALUE_EXP") を指定すればネストループジョインとなる 結合の内表が内部導出表 ( 詳細は HiRDB SQL リファレンス 2 章 ) とならない パラレルサーバに限るが 分割表に対する LEFT OUTER JOIN にて 内表の分割キーの内結合条件に含まれない列がある 103

105 付録 C-1-1 結合検索に関する記述 (2) ネストループジョインをハッシュジョインに変更する場合 結合結果の件数が多い場合 ハッシュジョインが効率よく結合処理を行なう場合があります ネストループジョインをハッシュジョインに変更する指定を以下に示します 1 SQL 拡張最適化オプションに コストベース最適化モード 2 の適用 ( COST_BASE_2 ) かつハッシュジョイン 副問合せのハッシュ実行 ( APPLY_HASH_JOIN ) を指定する 2 ハッシュ表サイズの指定を行う システム定義の pd_hash_table_size またはクライアント環境変数の PDHASHTBLSIZE 3 作業表用バッファの確保方式の指定を行う ( デフォルトは pool のため 省略可能 ) システム定義の pd_work_buff_mode = pool 4 作業表用バッファのサイズの指定を行う システム定義の pd_work_buff_size またはシステム定義の pd_work_buff_expand_limit 5 SQL 最適化オプションにて ネストループジョイン優先 ("PRIOR_NEST_JOIN") またはネストループジョイン強制 ("FORCE_NEST_JOIN") を指定していれば外す 上記で まだネストループジョインを行う場合は 6 結合列のインデクスを削除する ( 注 ) ハッシュジョインを行うためには データ型 データ長が同じ列同士の列 = 列の結合条件 (OR 演算した条件は不可 ) が指定されている必要があります 104

106 付録 C-1-2 結合検索に関する記述 (3) ハッシュジョインを一括ハッシュジョインにする場合 ハッシュ表サイズの指定で一括ハッシュジョイン処理 ( 内表から作成したハッシュ表を すべて作業表バッファ領域に展開しハッシュジョインする ) か バケット分割ハッシュジョイン処理 ( 内表 外表をバケットに分割し 内表の一部を作業表用バッファ領域に展開し 残りを作業表用ファイルに退避する ) かが決まり 性能も大きく異なります 一括ハッシュジョインにするためには ハッシュ表サイズを 内表の条件評価後のヒットデータをすべて載せるために十分な大きさにします ハッシュ表に内表データをすべて載せるには 以下のシステム定義 クライアント環境変数のオペランドを変更します 1 システム定義の pd_hash_table_size またはクライアント環境変数の PDHASHTBLSIZE を大きくする 2 システム定義の pd_work_buff_size または pd_work_buff_expand_limit を大きくする ( 注 ) 一括ハッシュジョインかバケット分割ハッシュジョインかどうか および一括ハッシュジョインするために必要なハッシュ表サイズは UAP に関する統計情報または UAP 統計レポート機能で確認できます 内表の条件評価後のヒットデータが ハッシュ表に載りやすくするために 条件評価後のヒットデータの少ない表を内表とします 外表と内表を入れ替えは 結合表構文 (INNER JOIN) を指定することにより行います 105

107 付録 C-2 グループ分け高速化処理 Point グループ分け高速化処理に対しては PDAGGR をチューニングする SQL 最適化オプションの指定を省略した場合 "RAPID_GROUPING"( グループ分け高速化処理 ) は省略値であるため GROUP BY を指定した SQL に対して ハッシュ表を使用したグループ分け高速化処理が適用されます ハッシュ表のサイズは クライアント環境定義 PDAGGR( 省略値は 1024) に基づいて決定されます ハッシュ表の領域不足を起こさないためには クライアント環境定義 PDAGGR にグループ化での最大グループ数を指定します ただし メモリの使用量とのトレードオフであるため 実メモリの空きサイズより適切な値を検討してください グループ分け高速化処理は グループ化前の行数に対して グループ数が十分小さい場合に大きな効果を発揮します 106

108 付録 C-3 無排他条件判定の指定 (1) Point 厳密な条件判定が要求されない場合は 無排他条件判定の適用を検討する インデクスが適切に定義されていないため 効率よくインデクスを利用した検索できない場合や テーブルスキャンになる場合 検索する行に排他が一時的にかかるため 条件に該当しないものにも排他がかかってしまいます このようなとき 無排他条件判定で探索条件を判定して満たした行にだけ排他を掛けます 無排他条件判定は 検索処理時には排他を掛けないで 探索条件を判定して満たした行にだけ排他を掛けます 探索条件を満たさない行 またはキー値に対して排他を掛けないため 通常の検索と比べて 検索時間が短縮でき 同時実行性を向上させます 次に検索する行の有無の判定 検索する行に排他を掛ける 探索条件の判定 条件に該当条件に該当しするないそのままの排他を解除状態する 図 C.3-1 通常の検索処理と排他の例 107

109 付録 C-3-1 無排他条件判定の指定 (2) 次に検索する行の有無の判定 探索条件の判定 条件に該当条件に該当しするない検索する行にそのままの排他を掛ける状態 そのままの状態 図 C.3-2 無排他条件判定を使用した検索処理の排他の例 無排他条件判定を指定する場合は 余分な範囲を検索しないように 検索するキーは探索範囲絞り込めるようにインデクスのチューニングを行っておきます インデクスのキーによって 探索範囲をある程度絞り込んだ状態から 条件を切り出して検索した場合 条件を満たすものだけに排他を掛けます このため 探索範囲の件数に比べて 条件を満たす件数が少ないと 通常の検索処理に比べて ( 条件を満たす件数 / 探索範囲の件数 ) の割合で排他処理を削減できます 無排他条件判定は クライアント環境定義のPDLOCKSKIPでYESを指定します 排他を掛けないで条件判定をするため COMMITしていないデータを検索して条件判定するおそれがあります 例えば 更新トランザクションと同時に条件判定するとき 条件判定での検索結果と 更新トランザクションの処理結果との間に差異 (ROLLBACKによる読み飛ばし) が発生することがあるので注意が必要です 108

110 付録 D. チューニングに関する記述 109

111 付録 D-1 インデクスを有効に使用するための考慮 Point インデクス定義時は メリット / デメリットを考慮する 以下にインデクスを有効に使用するために考慮する点について示します A) 大量データのランダム参照と I/O の増加大量データをアクセスすると ランダムにデータを参照したり アクセスする表の全データページ数を大きく超える I/O が発生したりする場合がある I/O を削減するために 絞り込める列にインデクスを定義する またインデクスを定義した列に絞り込みできるようにすること B) 更新列のインデクスメンテナンスによる更新オーバヘッドの増加インデクス定義時 更新の多い列に対する考慮すること C) 重複の多いキー値は インデクスメンテナンスオーバヘッド大ナル値の重複が多い場合は インデクス定義でナル値の除外を指定すること D) 絞り込める条件を指定している検索においてテーブルスキャン絞り込める条件の列にインデクスを定義することによって 表のデータのアクセス量を削減し 検索性能を改善できる ( 表の行数が少なく 現時点で性能が悪くなくても 将来 行数が増加する場合や 本番環境で行数が多いという場合に インデクスを利用すると性能が安定する ) 110

112 付録 D-2 集合関数 MAX/MIN でのインデクス利用 (1) Point 集合関数 MAX MIN の引数にする列は インデクスを定義する 集合関数 MAX MIN は 引数の列にインデクスの構成列を指定します 探索条件がない場合は MAX MIN の引数に 第 1 構成列を指定します また 探索条件がある場合は 条件を満たすインデクス構成列を指定することで インデクスを利用して最小値 最大値を求める性能が向上します 探索条件がある場合 次の条件を満たすインデクスが利用される = 条件列 ( または IS NULL 条件列 ) を 第 1~ 第 n 構成列として連続して含む n 1 MAX MIN の引数の列に 第 n+1 構成列に含む その他の条件列を第 n+2 構成列以降に含む SQL 文中に C1~Cm まで使用する m: 定義したインデクスの最大構成列数 SELECT MAX(Cn+1 ), MIN(Cn+1 ) FROM T1 WHERE C1=10 AND AND Cn=20 AND Cn+2 <30 AND Cm >40 INDEX ON T1(C1,, Cn, Cn+1, Cn+2,, Cm) 図 D.2-1 集合関数 MIN/MAX でのインデクスの利用 111

113 付録 D-2-1 集合関数 MAX/MIN でのインデクス利用 (2) SELECT MAX(ZA.ZSURYO) FROM ZAIKO ZA WHERE ZA.DNO=10 AND ZA.ZNO=20 ; SELECT MAX(ZA.ZSURYO) FROM ZAIKO ZA WHERE ZA.DNO=10 AND ZA.ZNO=20 AND ZA.ZSURYO<30 ; インデクス X01( DNO, ZNO, ZSURYO, TANKA ) 条件にインデクスの第 1 構成列から連続して = 指定 MAX の引数にインデクスの第 3 構成列を指定 SELECT MAX(ZA.ZSURYO) FROM ZAIKO ZA WHERE ZA.DNO=10 AND ZA.ZNO=20 AND ZA.TANKA<40 ; SELECT MAX(ZA.ZSURYO) FROM ZAIKO ZA WHERE ZA.DNO=10 AND ZA.ZNO<20 ; SELECT MAX(ZA.ZSURYO) FROM ZAIKO ZA WHERE ZA.DNO=10 AND ZA.ZNO=20 AND ZA.SNAME_ID<50 ; 図 D.2-2 最小値 最大値を取得の例 条件にインデクスの第 1 構成列に = 指定 第 2 構成列は < 指定 MAX の引数にインデクスの第 3 構成列を指定 第 2 構成列の条件指定は = 条件を指定する 条件にインデクス以外の列を指定 条件にはインデクスの構成列を指定して ソート処理を削減する 112

114 付録 D-2-2 集合関数 MAX/MIN でのインデクス利用 (3) 次の場合は MAX MIN 利用時 効率的に最小値 最大値を取得できないので注意してください 結合検索を指定 GROUP BY 句を指定 引数の異なる MAX MIN を指定 探索条件に値式または 256 ハ イト以上の値 表がサーバ内で複数 RD エリアに分割格納され インデクスも分割インデクス ( 分割キーのすべての構成列に = 条件がある場合を除く ) 以降は HiRDB/ パラレルサーバのみ INSERT~SELECT 文中 集合演算を指定 HAVING 句を指定 FOR READ ONLY を指定 113

115 付録 D-3 DISTINCT 集合関数のインデクス利用 Point DISTINCT 集合関数の引数にする列はインデクスの第 1 構成列に定義する DISTINCT 集合関数の引数にインデクスの第 1 構成列を指定すると 作業表の作成が回避されます SELECT COUNT(DISTINCT ZA.SNAME) FROM ZAIKO ZA; CREATE INDEX XO1 ON ZAIKO (SNAME, COL); CREATE INDEX XO1 ON ZAIKO (SNAME); CREATE INDEX XO1 ON ZAIKO (COL, SNAME); 図 D.3-1 インデクス列のみ選択の例 引数が第 1 構成列にならない 114

116 付録 D-4 ネストループジョイン (1) Point インデクスは内表の結合キーを第 1 構成列から連続して構成列に指定して定義する 内表検索時に行データを参照して結合条件を評価する指定は 検索の性能を著しく悪くさせます 検索の性能向上を図るために 以下に示す結合キーをインデクスに定義して インデクス利用効率を向上させます 結合キーと一致するインデクスである 結合キーのすべての列が第 1~ 第 n 構成列に連続して含まれるインデクスである 不連続な場合 第 1~ 第 n 構成列は 結合列か = 条件列か IS NULL 条件列である 115

117 付録 D-4-1 ネストループジョイン (2) SELECT JU.ZNO FROM ZAIKO ZA, JUTYU JU WHERE ZA.DNO = 10 AND JU.ZNO = ZA.ZNO AND JU.SURYO = ZA.ZSURYO AND JU.TCODE = ZA.TCODE ; ZAIKO JUTYU のネストルーフ シ ョインとする内表 JUTYU の結合キーは以下 ZNO, SURYO, TCODE CREATE INDEX XO1 ON JUTYU(ZNO, SURYO, TCODE); CREATE INDEX XO1 ON JUTYU(TCODE, SURYO, ZNO); 結合キーがすべて含まれる 探索条件の指定順序と構成列順が異なっても良い CREATE INDEX XO1 ON JUTYU(ZNO, TCODE, SURYO); CREATE INDEX XO1 ON JUTYU(ZNO, SURYO, TCODE, JDATE1); 結合キーは先頭の構成列から連続していれば良い CREATE INDEX XO1 ON JUTYU(ZNO, SURYO, JDATE1, TCODE); CREATE INDEX XO1 ON JUTYU(ZNO); CREATE INDEX XO1 ON JUTYU(SURYO); CREATE INDEX XO1 ON JUTYU(ZNO, SURYO); JDATE1 により結合キーは先頭の構成列から連続しないとサーチ範囲が広く性能劣化 結合キーのいくつかがインデクス構成列に含まれない 図 D.4-1 結合キーとインデクスの定義例 116

118 付録 E. SQL 最適化オプション 117

119 付録 E-1 SQL 最適化オプション SQL 拡張最適化オプション 解説 SQL 最適化オプション SQL 拡張最適化オプションとは データベースの状態を考慮して 最も効率的なアクセスパスを決定するための SQL 実行時の最適化方法を指定するオプションのことです SQL 最適化オプションと SQL 拡張最適化オプションの指定方法を示します 詳細は マニュアル システム定義 UAP 開発ガイド または SQL リファレンス を参照してください 指定の種類指定場所パラメタ SQL 最適化オプションの指定 SQL 拡張最適化オプションの指定 システム定義クライアント環境定義ストアドルーチン中およびトリガ中のSQL 文システム定義クライアント環境定義ストアドルーチン中およびトリガ中のSQL 文 pd_optimize_level PDSQLOPTLVL OPTIMIZE LEVEL pd_additional_optimize_level PDADDITIONALOPTLVL ADD OPTIMIZE LEVEL 118

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部 はじめに コース概要と目的 Oracle 独自の手続き型言語である PL/SQL について説明します PL/SQL の基本構文 ストアド サブプログラム トリガーの作成方法 またストアド サブプログラムの管理について習得することを目的としています 受講対象者 これから PL/SQL を使用してアプリケーション開発をされる方 前提条件 SQL トレーニング コースを受講された方 もしくは 同等の知識をお持ちの方

More information

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント はじめに コース概要と目的 Oracle をより効率的に使用するための SQL チューニング方法を説明します また 索引の有無 SQL の記述方 法がパフォーマンスにどのように影響するのかを実習を通して習得します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 SQL トレーニング データベース アーキテクチャ コースを受講された方 もしくは同等の知識をお持 ちの方 テキスト内の記述について

More information

Microsoft PowerPoint - 講義補助資料2017.pptx

Microsoft PowerPoint - 講義補助資料2017.pptx 66 SQL 最も標準的なリレーショナルデータベースの言語 ISO による国際標準規格であり特定の企業に依存しない SQL の規格 :SQL89(SQL1), SQL92(SQL2), SQL:1999(SQL3), SQL:2003, SQL:2006, SQL:2008, SQL:2011 標準規格としての SQL は 何かの略語ではない と規定されている ( 参考 : IBM 社の製品で使われている

More information

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String 目次 1.SqlCtl クラスリファレンス 2 (1)Connect() メソッド 2 (2)DisConnect() メソッド 3 (3)Commit() メソッド 3 (4)Rollback() メソッド 4 2.SqlStm クラスリファレンス 5 (1)Prepare() メソッド 5 (2)Execute() メソッド 6 (3)Release() メソッド 6 (4)Immediate()

More information

導入設定ガイド

導入設定ガイド Big Bang System Corporation ExLook Online 機体認証オプション 管理者マニュアル 第 2 版平成 24 年 2 月 17 日 株式会社ビービーシステム Copyright (c) 2010, Big Bang System Corporation. All rights reserved. 本書に記載された事項で発生したいかなる事態もその責務を負いません また

More information

Section1_入力用テンプレートの作成

Section1_入力用テンプレートの作成 入力用テンプレートの作成 1 Excel には 効率よく かつ正確にデータを入力するための機能が用意されています このセクションでは ユーザー設定リストや入力規則 関数を利用した入力用テンプレートの作成やワークシート操作について学習します STEP 1 ユーザー設定リスト 支店名や商品名など 頻繁に利用するユーザー独自の連続データがある場合には ユーザー設定リスト に登録しておけば オートフィル機能で入力することができ便利です

More information

5.1. ホームページ登録 ホームページ URL を登録します ホームページ URL は基本契約で 1 個 (100MB) まで無料 2 個目以降は有料オプションサービス ( 月額 300 円 / 個 ) で追加登録が可能です (1) 左メニューの HP アカウント登録 リンクをクリックします (1

5.1. ホームページ登録 ホームページ URL を登録します ホームページ URL は基本契約で 1 個 (100MB) まで無料 2 個目以降は有料オプションサービス ( 月額 300 円 / 個 ) で追加登録が可能です (1) 左メニューの HP アカウント登録 リンクをクリックします (1 5. HP( ホームページ ) アカウント情報 ホームページアカウント情報では ホームページ URL の取得やパスワードの変更 ホームページ容量の追加 authid の設定など ホームページ URL に関する管理が行えます HP アカウント情報 にアクセスするには 世帯情報参照 画面で HP アカウント情報 のリンクをクリックします 新しくホームページ URL を取得する場合は 41 ページへ FTP

More information

Windows Small Business Server 2011 Essentialsバックアップ容量節減ガイド

Windows Small Business Server 2011 Essentialsバックアップ容量節減ガイド Windows Small Business Server 2011 Essentials バックアップ容量節減ガイド 2011 年 6 月 富士通株式会社 改訂履歴 改版日時版数改版内容 2011.6.15 1.0 新規作成 本書では 以下の略称を使用することがあります 正式名称 略称 製品名 Microsoft Windows Small Business Server 2011 Essentials

More information

POWER EGG2.0 Ver2.8 スタートアップガイド ~Webデータベース 応用編~

POWER EGG2.0 Ver2.8 スタートアップガイド ~Webデータベース 応用編~ POWER EGG2.0 Ver2.8 スタートアップガイド ~ Web データベースの作成応用編 ~ 第 1 版 2016 年 3 月ディサークル株式会社 改版履歴 版数 改版年月日 備考 1.0 2016/03/04 初版 (POWER EGG2.0 Ver2.8 版 ) 目次 はじめに... 1 第 1 章データベース間の連携設定... 2 1-1 WebDB 間連携項目フィールドの作成...

More information

やってみようINFINITY-写真管理 編-

やってみようINFINITY-写真管理 編- 目次 やってみよう for Wingneo INFINITY やってみよう for Wingneo INFINITY... 1 目次... 1 システムの起動... 1 写真管理に登録する写真を準備する... 1 写真管理 ( 電子納品 ) の操作方法... 2 写真整理... 2 成果区分の設定... 4 成果管理から電納編集ツールへの操作方法... 5 電納編集ツール ( 写真管理 ) の操作方法

More information

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx データベース 第 11 回 (2009 年 11 月 27 日 ) テーブル結合と集計 ( 演習 ) 第 11 回のテーマ 前回より シラバスから離れ 進捗状況に合わせて全体構成を変更しています テーマ1: テーブルの結合 テーマ 2: 結合した結果からの様々な検索 テーマ3: 集計の方法 今日学ぶべきことがら Select 文のさまざまな表現 Natural join sum(*) orrder

More information

編集する ファイルを開く マイクロデータの設定を行うファイルまたはファイルを開きます 開かれたファイルは編集画面に表示されて ブラウザ表示した時のプレビューも同時に表示されます HTML ファイルの選択 編集する ファイルを開くためにメインメニューから ファイル 開く を選びます ファイル選択ダイア

編集する ファイルを開く マイクロデータの設定を行うファイルまたはファイルを開きます 開かれたファイルは編集画面に表示されて ブラウザ表示した時のプレビューも同時に表示されます HTML ファイルの選択 編集する ファイルを開くためにメインメニューから ファイル 開く を選びます ファイル選択ダイア 基本操作編 編集するファイルを開く... ファイルの選択... 各パネルの表示非表示... マイクロデータ : の編集... 編集するテキストの選択... 適用するテキストの選択... アイテムタイプの選択... アイテムタイプの検索... よく使うアイテムタイプの登録... よく使うアイテムタイプの削除... 定型セットの登録... 定型セットの削除... 定型セット内のアイテムタイプの削除...

More information

1 はじめに 従 来 診 療 報 酬 明 細 書 (レセプト)は 紙 媒 体 で 請 求 されてき たが 2011 年 度 より 原 則 として 電 子 請 求 されるようになった 従 来 の 紙 媒 体 に 比 べ 分 析 が 容 易 になったため 電 子 化 され たレセプトデータの 様 々な

1 はじめに 従 来 診 療 報 酬 明 細 書 (レセプト)は 紙 媒 体 で 請 求 されてき たが 2011 年 度 より 原 則 として 電 子 請 求 されるようになった 従 来 の 紙 媒 体 に 比 べ 分 析 が 容 易 になったため 電 子 化 され たレセプトデータの 様 々な レセプトデータ 分 析 に 関 する 教 育 プログラム 馬 場 園 明 ゼミ 1 はじめに 従 来 診 療 報 酬 明 細 書 (レセプト)は 紙 媒 体 で 請 求 されてき たが 2011 年 度 より 原 則 として 電 子 請 求 されるようになった 従 来 の 紙 媒 体 に 比 べ 分 析 が 容 易 になったため 電 子 化 され たレセプトデータの 様 々な 分 野 での 活 用

More information

棚POWER操作テキスト 帳票作成編

棚POWER操作テキスト 帳票作成編 Ⅱ. 棚割モデルの陳列内容を出力する 開いている棚割モデルに対して 選択した 1 帳票を出力する 棚割帳票 機能をご説明します 棚割図 1. 棚割モデルを元に 商品画像を使用して実際の棚割を写真で撮影したような画像 ( 図 ) を出力できます 印刷出力の他に Excel,PDF ファイルとして直接出力が可能です 2. [ 棚割帳票 ] から出力します 棚割帳票から出力する場合は 棚割モデルを選択 表示している必要があります

More information

すだちくんメール法人(所属設定職員管理)_docx

すだちくんメール法人(所属設定職員管理)_docx すだちくんメール 法 管理マニュアル 所属設定 職員管理所属設定 職員管理 第 1 版 作成日 2015 年 12 月 7 日 最終更新日 2015 年 12 月 7 日 目次 概要... 2 法人管理画面... 3 ログイン... 3 所属名称管理... 5 所属 (1 階層目 ) の新規登録... 5 所属 (2 階層目以降 ) の新規登録... 6 CSV ファイルを使用した所属の一括登録...

More information

1 目次 1 目次 はじめに Tips セットアップ 事前準備 事前準備 セットアップ セットアップ ( その他 ) Tips 概要 概要 処理フ

1 目次 1 目次 はじめに Tips セットアップ 事前準備 事前準備 セットアップ セットアップ ( その他 ) Tips 概要 概要 処理フ TALON Tips < 明細にある数量項目の合計額を表示する > 株式会社 HOIPOI 第 1.0 版 p. 1 1 目次 1 目次... 2 2 はじめに... 3 3 Tips セットアップ... 4 3.1 事前準備... 4 3.2 事前準備 2... 4 3.3 セットアップ... 4 3.4 セットアップ ( その他 )... 5 4 Tips 概要... 6 4.1 概要... 6

More information

変更履歴 Version 年月日変更内容備考 年 12 月 20 日初版

変更履歴 Version 年月日変更内容備考 年 12 月 20 日初版 Calc LibreOffce Calc リファレンスマニュアル Ver._1.00. 変更履歴 Version 年月日変更内容備考 1.00 2013 年 12 月 20 日初版 目次 変更履歴... はじめに...1 略記について...2 対象バージョンについて...3 EXCEL との違い...4 全角 / 半角の取り扱い...4 初期フォントを設定する...4 標準フォントを変更する...5

More information

TimeTracker FX セットアップガイド 補足資料 2/14 0. はじめに 本資料は [TimeTracker FX セットアップガイド ] では説明していない Microsoft SQL Server 2005 ( 以下 SQL Server 2005) の設定や操作方法を補足するための

TimeTracker FX セットアップガイド 補足資料 2/14 0. はじめに 本資料は [TimeTracker FX セットアップガイド ] では説明していない Microsoft SQL Server 2005 ( 以下 SQL Server 2005) の設定や操作方法を補足するための TimeTracker FX 補足資料 SQL Server 2005 インストール方法 2007 年 1 月 TimeTracker FX セットアップガイド 補足資料 2/14 0. はじめに 本資料は [TimeTracker FX セットアップガイド ] では説明していない Microsoft SQL Server 2005 ( 以下 SQL Server 2005) の設定や操作方法を補足するためのものです

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 検索キーワードの設定方法 1 1. 検索キーワード修正手順 1: セラーセントラルでの 1 商品ごとの修正 (P3~) 2. 検索キーワード修正手順 2: 在庫ファイルを使った一括修正 (P8~) 3. 修正時の修正点 (P26~) 2 1. 検索キーワード修正手順 1: セラーセントラルでの 1 商品ごとの修正 3 11 商品ごとの検索キーワードの修正 1 商品ごとの商品情報修正 :3 ステップ

More information

OracleDBA(パフォーマンスチューニング(SQL編) - コピー

OracleDBA(パフォーマンスチューニング(SQL編) - コピー チューニング検討 体感的に遅い SQL を特定出来 Y N 一定期間の統計から抽出す N Y SQL トレース &TKPROF STATSPACK EXPLAIN PLAN コマンド 現在の状況から抽出する N Y AUTOTRACE 動的パフォーマンスヴュー V$SQL V$SQL_TEXT V$SQLL_PLAN 1 2) V$ 表 ( 動的パフォーマンスヴュー ) 1 使用するヴュー V$SQL

More information

コースの目標 このコースを修了すると 下記のことができるようになります : 1. RAID とそのさまざまな構成の基本的理解を深める 2. RAID で新しいストレージボリュームをセットアップする 前提条件 受講前提条件 : なし 次の項目についての知識を持つ受講生を対象としています : 該当なし

コースの目標 このコースを修了すると 下記のことができるようになります : 1. RAID とそのさまざまな構成の基本的理解を深める 2. RAID で新しいストレージボリュームをセットアップする 前提条件 受講前提条件 : なし 次の項目についての知識を持つ受講生を対象としています : 該当なし NAS 251 RAID の概要 RAID でストレージボリュームをセットアップする A S U S T O R C O L L E G E コースの目標 このコースを修了すると 下記のことができるようになります : 1. RAID とそのさまざまな構成の基本的理解を深める 2. RAID で新しいストレージボリュームをセットアップする 前提条件 受講前提条件 : なし 次の項目についての知識を持つ受講生を対象としています

More information

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1 4. ソート ( 教科書 p.205-p.273) 整列すなわちソートは アプリケーションを作成する際には良く使われる基本的な操作であり 今までに数多くのソートのアルゴリズムが考えられてきた 今回はこれらソートのアルゴリズムについて学習していく ソートとはソートとは与えられたデータの集合をキーとなる項目の値の大小関係に基づき 一定の順序で並べ替える操作である ソートには図 1 に示すように キーの値の小さいデータを先頭に並べる

More information

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10 PASSEXAM http://www.passexam.jp Exam : 70-461J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10 1. あなたが ContosoDb 付きの Microsoft SQL Server 2012 のデータベースを管理します 展示に示すように テーブルが定義されています ( 図表ボタンをクリックします

More information

Microsoft Word - Build3264Project.doc

Microsoft Word - Build3264Project.doc 32bit 用インストーラと 64Bit 用インストーラを同一のプロジェクトで作成する 注 ) このドキュメントは InstallShield 2011 Premier Edition を基に作成しています InstallShield 2011 以外のバージョンでは設定名などが異なる場合もあります 概要 MSI 形式インストーラでは Windows Installer の仕様により 32Bit 環境と

More information

<4D F736F F D205F88EA94CA8CFC82AF5F EE888F88F912E646F63>

<4D F736F F D205F88EA94CA8CFC82AF5F EE888F88F912E646F63> CADSUPER FXⅡ 設定情報ユーティリティ 利用手引書 1/24 目次 1. はじめに... 3 1-1. 設定情報ユーティリティの機能... 3 1-2. 動作環境... 3 2. バックアップ... 4 2-1. 処理イメージ... 4 2-2.CADSUPER FXⅡ の設定情報をバックアップする手順について... 5 2-3. 動作条件及び注意事項... 8 3. リストア... 9

More information

Nagios XI Webサイトの改ざん監視

Nagios XI Webサイトの改ざん監視 目的 この資料では Web サイトの改ざん 編集 悪意のあるコード挿入を監視する Web サイト改ざん監視ウィザードの使用方法について説明します Web サイト改ざん監視ウィザードを使用すれば Web サイトの改変を監視し Web サイトに好ましくないコンテンツが見つかったら通知することができます 対象読者 この資料は Web サイトの改ざんを監視したい Nagios 管理者およびエンドユーザーを対象としています

More information

Functional Programming

Functional Programming PROGRAMMING IN HASKELL プログラミング Haskell Chapter 7 - Higher-Order Functions 高階関数 愛知県立大学情報科学部計算機言語論 ( 山本晋一郎 大久保弘崇 2013 年 ) 講義資料オリジナルは http://www.cs.nott.ac.uk/~gmh/book.html を参照のこと 0 Introduction カリー化により

More information

インストーラー 管理番号 内容 対象バージョン 230 HULFT がすでにインストールされているパスに対してサイレントインストールを実行すると インストールされていた HULFT の動作環境が不正な状態になる 7.3.0~7.3.1 ユーティリティ 管理番号 内容 対象バージョン 231 管理情報

インストーラー 管理番号 内容 対象バージョン 230 HULFT がすでにインストールされているパスに対してサイレントインストールを実行すると インストールされていた HULFT の動作環境が不正な状態になる 7.3.0~7.3.1 ユーティリティ 管理番号 内容 対象バージョン 231 管理情報 リビジョンアップ詳細情報 < 製品一覧 > 製品名 バージョン HULFT7 for Windows-EX 7.3.2 HULFT7 for Windows-ENT 7.3.2 HULFT7 for Windows-M 7.3.2 HULFT7 for Windows-L 7.3.2 < 改善一覧 > HULFT 管理番号 内容 対象バージョン説明書参照章 79 履歴削除処理に関する改善 7.0.0~7.3.1-148

More information

目次 既存アカウントにモバイルライセンスキーコードを追加 ライセンスキーコードを追加 ポータルへモバイルデバイスを追加 電話番号の入力ルール /AU 端末の制限 ( 留意事項 ) ダウンロードリンクの通知 (SMS 配信 )/ 子デバイスキー生成 モバイルデバイスへのソフトウェアダウンロード ダウン

目次 既存アカウントにモバイルライセンスキーコードを追加 ライセンスキーコードを追加 ポータルへモバイルデバイスを追加 電話番号の入力ルール /AU 端末の制限 ( 留意事項 ) ダウンロードリンクの通知 (SMS 配信 )/ 子デバイスキー生成 モバイルデバイスへのソフトウェアダウンロード ダウン エンドポイントウィルス対策サービス モバイル端末利用者向けマニュアル [ エンドポイントウィルス対策サービス利用者さま向け ] 0 年 8 月 日 Version.0 bit-drive Copyright 0 Sony Business Solutions Corporation 目次 既存アカウントにモバイルライセンスキーコードを追加 ライセンスキーコードを追加 ポータルへモバイルデバイスを追加

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション Synology インストールガイド 株式会社アスク Synology NAS でできること 家庭内に設置することで簡単に写真や動画の共有が行えます ユーザーごとに閲覧可否を制御することが出来ます 専用のアプリを利用することでスマートフォンやタブレットからもアクセスできます 特定のフォルダのみ閲覧可能 外出先など外部のネットワークからアクセス 写真や動画のアップロード Synology NAS アプリを利用して閲覧

More information

WLX302 取扱説明書

WLX302 取扱説明書 WLX302 2 3 4 5 6 7 8 9 にインストール 10 11 12 13 点 消 14 15 16 1 2 17 3 18 19 1 2 3 20 1 2 3 4 21 1 2 3 22 1 2 3 4 23 1 2 24 3 25 1 2 3 26 1 2 27 3 4 28 1 2 29 3 4 30 1 2 31 1 2 3 32 1 2 33 第4章 3 本製品に無線 LAN 接続する

More information

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

書式に示すように表示したい文字列をダブルクォーテーション () の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf( 情報処理基礎 ); printf(c 言語の練習 ); printf 情報処理基礎 C 言語についてプログラミング言語は 1950 年以前の機械語 アセンブリ言語 ( アセンブラ ) の開発を始めとして 現在までに非常に多くの言語が開発 発表された 情報処理基礎で習う C 言語は 1972 年にアメリカの AT&T ベル研究所でオペレーションシステムである UNIX を作成するために開発された C 言語は現在使われている多数のプログラミング言語に大きな影響を与えている

More information

Basic descriptive statistics

Basic descriptive statistics データ 情報基盤の活用事例 Scopus-NISTEP 大学 公的機関名辞書対応テーブルの活用事例 ( その 1) 2013 年 7 月 1 日 科学技術 学術政策研究所 科学技術 学術基盤調査研究室 1 < はじめに > はじめに 本資料には Scopus-NISTEP 大学 公的機関名辞書対応テーブルの活用事例をまとめています 本資料と併せて Scopus-NISTEP 大学 公的機関名辞書対応テーブル説明書

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

More information

問題 1 次の文章は 作業環境について述べたものである を解答群 { } より選び その記号で答えよ にあてはまる適切なもの 設問 1. < 図 1>はルーラーの一部である 1に示されるインデントマーカーを移動することにより を設定することができる < 図 1> { ア. 1 行目のインデントイ.

問題 1 次の文章は 作業環境について述べたものである を解答群 { } より選び その記号で答えよ にあてはまる適切なもの 設問 1. < 図 1>はルーラーの一部である 1に示されるインデントマーカーを移動することにより を設定することができる < 図 1> { ア. 1 行目のインデントイ. Microsoft PowerPoint プレゼンテーション技能認定試験 上級 2007 サンプル問題 知識試験 制限時間 30 分 受験会場 受験番号 氏 名 問題 1 次の文章は 作業環境について述べたものである を解答群 { } より選び その記号で答えよ にあてはまる適切なもの 設問 1. < 図 1>はルーラーの一部である 1に示されるインデントマーカーを移動することにより を設定することができる

More information

『テクノス』V2プログラムインストール説明書

『テクノス』V2プログラムインストール説明書 土木積算システム テクノス V2 プログラム インストール説明書 ( 第 3 版 ) 目 次 1. テクノス V2 プログラム インストールの概要...3 2. テクノス V2 のプログラム ドライバ インストール...4 3. テクノス V2 の初期起動...10 4. アンインストール...11 5. 補足 ( 動作環境 )...11 2. 1. テクノス V2 プログラム インストールの概要

More information

データの作成方法のイメージ ( キーワードで結合の場合 ) 地図太郎 キーワードの値は文字列です キーワードの値は重複しないようにします 同じ値にする Excel データ (CSV) 注意キーワードの値は文字列です キーワードの値は重複しないようにします 1 ツールバーの 編集レイヤの選択 から 編

データの作成方法のイメージ ( キーワードで結合の場合 ) 地図太郎 キーワードの値は文字列です キーワードの値は重複しないようにします 同じ値にする Excel データ (CSV) 注意キーワードの値は文字列です キーワードの値は重複しないようにします 1 ツールバーの 編集レイヤの選択 から 編 手順 4 Excel データを活用する ( リスト / グラフ 色分け ) 外部の表データ (CSV 形式 ) を読み込み リスト表示やカード表示 その値によって簡単なグラフ ( 円 正方形 棒の 3 種類 ) や色分け表示することができます この機能を使って地図太郎の属性情報に無い項目も Excel で作成し CSV 形式で保存することにより 自由に作成することができます (Excel でデータを保存するとき

More information

ISMS認証機関認定基準及び指針

ISMS認証機関認定基準及び指針 情報セキュリティマネジメントシステム ISMS 認証機関認定基準及び指針 JIP-ISAC100-3.1 2016 年 8 月 1 日 一般財団法人日本情報経済社会推進協会 106-0032 東京都港区六本木一丁目 9 番 9 号六本木ファーストビル内 Tel.03-5860-7570 Fax.03-5573-0564 URL http://www.isms.jipdec.or.jp/ JIPDEC

More information

スライド 1

スライド 1 1 新機能追加 リリース :2014/7/13 1.1 Salesforce1 アプリケーション開発対応既存のブラウザ画面 ( フルサイト ) と同様に Salesforce1 アプリケーション画面も開発できるようになりました Salesforce 社と同様 サポート対応範囲は各種デバイスのアプリ ブラウザになります PC デバイス アプリ ブラウザ ブラウザ (Chrome ) モバイル ipad

More information

基本サンプル

基本サンプル SQLCompiler for LINQ(C#) のサンプル ( 基本サンプル ) < 一覧表 > ファイル名 : 前版サンプルから更新したファイル名 ファイル名 説明 リンク No1.linq 単一テーブルを使用する 表 1 No2.linq 2つのテーブルのクロス結合を使用する 表 2 No3.linq 2つのテーブルの内部結合を使用する 表 3 No4.linq No3.linq で GROUP

More information

Vectorworksサイトプロテクションネットワーク版-情報2

Vectorworksサイトプロテクションネットワーク版-情報2 Vectorworks サイトプロテクションネットワーク版 - 情報 2 セットアップリスト A&A セットアップリストについて 概要 ) 本リストは Vectorworksサイトプロテクションネットワーク版 ( 以下 SPN 版 ) のサーバアプリケーションが正しくセットアップされたかを確認する為のリストです 本リストを全てクリアすれば SPN 版が使用できる環境が整った事を意味します 使い方 )

More information

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携

Cisco CSS HTTP キープアライブと ColdFusion サーバの連携 Cisco CSS 11000 HTTP キープアライブと ColdFusion サーバの連携 目次 概要 HTTP ヘッダーについて HTTP HEAD メソッドと HTTP GET メソッドの違いについて ColdFusion サーバの HTTP キープアライブへの応答方法 CSS 11000 で認識される HTTP キープアライブ応答もう 1 つのキープアライブ URI と ColdFusion

More information

スライド 1

スライド 1 Internet Explorer の設定マニュアル このマニュアルは 長崎市の入札関連システム ( ) をご利用頂くために必要なInternet Explorerの設定手順を説明します お使いのパソコンの環境 ( ブラウザのバージョンなど ) に応じて必要な設定を行ってください なお お使いのブラウザのバージョンによっては掲載する画面と異なる場合がございます あらかじめご了承ください 入札関連システム

More information

1 はじめに はじめに メールシステムの切り替えについて お問い合わせ窓口 メールソフト設定の前に (OUTLOOK2010 および 2007) OUTLOOK のバージョン確認 WINDOWS

1 はじめに はじめに メールシステムの切り替えについて お問い合わせ窓口 メールソフト設定の前に (OUTLOOK2010 および 2007) OUTLOOK のバージョン確認 WINDOWS Office365 Outlook クライアント 教職員向け操作手順書 1 1 はじめに... 3 1.1 はじめに... 3 1.2 メールシステムの切り替えについて... 3 1.3 お問い合わせ窓口... 3 2 メールソフト設定の前に (OUTLOOK2010 および 2007)... 4 2.1 OUTLOOK のバージョン確認... 4 2.2 WINDOWS UPDATE を実施する場合の注意点...

More information

Windows Server 2003 Service Pack 適用手順書

Windows Server 2003 Service Pack 適用手順書 CLUSTERPRO X for Windows Windows Server 2008 Service Pack 適用手順書 第 1 版 2009 年 6 月 23 日 本手順書では CLUSTERPRO X 2.0/2.1 環境における Windows Server 2008 Service Pack 2 の適用方法を説明します 以降 特に記述のない場合 Service Pack は Windows

More information

MIRACLE System Savior操作手順書

MIRACLE System Savior操作手順書 バックアップ / リストア作業手順書 Copyright 2000-2013 MIRACLE LINUX CORPORATION All rights reserved Ver.1.1 変更履歴日付 作成者 Revision 対象 変更内容 2013/07/02 青山雄一 1.0 全体 初版作成 2013/12/27 青山雄一 1.1 全体 V2R4 対応 Copyright 2000-2013 MIRACLE

More information

スライド 1

スライド 1 旧設定サイトからの パスワード引継ぎ 操作ガイド 平成 2 8 年東日本電信電話株式会社 もくじ 旧設定サイトからパスワード引継ぎ P1 旧設定サイトへ接続 P6 ひかり電話設定サイトから旧設定サイトへの接続方法 P7 ご利用上の注意事項 P8 ひかり電話設定サイトとは ひかり電話設定サイトとは パソコンなどからひかり電話 / ひかり電話オフィスタイプ / ひかり電話オフィス A( エース ) における

More information

PC 移行は以下の流れで行います 次ページ以降に各手順を記載しますのでご確認ください ( をクリックすると該当の説明にジャンプします ) 移行元の PC での作業 Step1 移行するデータをバックアップする (3 ページ ) [ 随時処理 ]-[ データコピー処理 ] メニュー 複数のデータが存在

PC 移行は以下の流れで行います 次ページ以降に各手順を記載しますのでご確認ください ( をクリックすると該当の説明にジャンプします ) 移行元の PC での作業 Step1 移行するデータをバックアップする (3 ページ ) [ 随時処理 ]-[ データコピー処理 ] メニュー 複数のデータが存在 奉行 21 シリーズ ( スタンドアロン版 ) PC 移行の手順書 新しい PC を購入したので この PC で奉行製品を利用したい など 現在ご利用の PC から別 PC で奉行製品をご利用になる場合の移行手順を説明します 次ページに各作業の流れを記載しますのでご確認ください 移行元の PC 1 データやユーザー権限情報を移行先の PC で参照可能なメディアにバックアップします 2 奉行製品をセットアップします

More information

AQUOS ケータイ ユーザーガイド

AQUOS ケータイ ユーザーガイド 文字を入力する 本機の文字入力は ボタン操作で行います お買い上げ時の入力方 法 (S-Shoin) で説明します 変換候補を引用する ひらがなを入力 引用 連携 項目を選択 変換候補を選択 文字入力の基本操作 文字入力にはダイヤルボタンを利用します 1つのボタンには ボタンに表示されているような複数の文字が割り当てられており 押す回数によって表示される文字が変わります ダイヤルボタンに割り当てられた文字について詳しくは

More information

UIOUSBCOM.DLLコマンドリファレンス

UIOUSBCOM.DLLコマンドリファレンス UIOUSBCOM.DLL UIOUSBCOM.DLL Command Reference Rev A.1.0 2008/11/24 オールブルーシステム (All Blue System) ウェブページ : www.allbluesystem.com コンタクト :contact@allbluesystem.com 1 このマニュアルについて...3 1.1 著作権および登録商標...3 1.2

More information

ESET NOD32アンチウイルス V4.2 リリースノート

ESET NOD32アンチウイルス V4.2 リリースノート ====================================================================== ESET NOD32 アンチウイルス V4.2 リリースノート キヤノンITソリューションズ株式会社 ====================================================================== はじめにキヤノンITソリューションズ製品をご愛顧いただき誠にありがとうございます

More information

北海道経済 社会指標データベース操作マニュアル 北海道開発局開発監理部開発計画課 目 次 1 データベースの準備...1 1.1 動作環境... 1 1.2 データベースのインストール... 1 1.3 データベースのアンインストール... 1 1.4 データベースの起動と終了... 2 2 データベースの検索メニュー...3 2.1 画面構成... 3 3 統計データ検索...5 3.1 画面構成...

More information

Mobile Access簡易設定ガイド

Mobile Access簡易設定ガイド Mobile Access Software Blade 設定ガイド チェック ポイント ソフトウェア テクノロジーズ ( 株 ) アジェンダ 1 SSL VPN ポータルの設定 2 3 4 Web アプリケーションの追加 Check Point Mobile for iphone/android の設定 Check Point Mobile for iphone/android の利用 2 変更履歴

More information

内容 専用アプリケーションをインストールする... 3 アカウントを設定する... 5 ファイル フォルダをアップロードする... 8 ファイル フォルダをダウンロードする 専用アプリケーションをアンインストールする 転送状態 ( ファイルアップロード進捗状況 ) を確認する

内容 専用アプリケーションをインストールする... 3 アカウントを設定する... 5 ファイル フォルダをアップロードする... 8 ファイル フォルダをダウンロードする 専用アプリケーションをアンインストールする 転送状態 ( ファイルアップロード進捗状況 ) を確認する ServersMan@Disk Windows 版専用アプリケーション操作マニュアル 1 内容 専用アプリケーションをインストールする... 3 アカウントを設定する... 5 ファイル フォルダをアップロードする... 8 ファイル フォルダをダウンロードする... 11 専用アプリケーションをアンインストールする... 12 転送状態 ( ファイルアップロード進捗状況 ) を確認する... 14

More information

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2 Oracle Direct Seminar 試験対策ポイント解説 11g SQL 基礎 Ⅰ 日本オラクル株式会社 アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2 資格体系 実務エキスパートの認定

More information

はじめに < 本 日 のテーマ> 超 高 速 データベース Hitachi Advanced Data Binder での SQLチューニング 方 法 を 情 報 の 取 得 から 問 題 点 を 見 つけて 対 策 するまでの 流 れと チューニング 事 例 をご 紹 介 いたします 本 資 料

はじめに < 本 日 のテーマ> 超 高 速 データベース Hitachi Advanced Data Binder での SQLチューニング 方 法 を 情 報 の 取 得 から 問 題 点 を 見 つけて 対 策 するまでの 流 れと チューニング 事 例 をご 紹 介 いたします 本 資 料 db tech showcase 2015 Hitachi Advanced Data Binder 実 践 SQLチューニング 方 法 2015/06/12 株 式 会 社 日 立 製 作 所 情 報 通 信 システム 社 ITプラットフォーム 事 業 本 部 サービスイノベーション 統 括 本 部 IT 基 盤 ソリューション 本 部 DB 部 山 口 健 一 はじめに < 本 日 のテーマ>

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション Group Calendar 2011 のご紹介 画面サンプル集 OnTime Group Calendar Direct Shop ( オンタイムグループカレンダーダイレクトショップ ) https://ontimesuite.jp 画面一覧 利用者画面サンプル 1. 今までのノーツのグループスケジュール 2. これからのノーツのグループスケジュール 3. 特定の凡例だけにフォーカスできます 4.

More information

基本サンプル

基本サンプル SQLCompiler for LINQ(C#) のサンプル (LINQPad 用 LINQ to Entities 基本サンプル ) 本サンプルで使用した Visual Studio プロジェクトの pubs データベースの概念モデルは 以下のテーブル名とカラム名が 直接 SQL Sever へクエリする場合と異なるので が補正されています テーブル名が異なるもの employee employees

More information

出力ログ管理ソリューションカタログ

出力ログ管理ソリューションカタログ 出力ログ管理ソリューション imageware Accounting Manager for MEAP 複合機利用時に自分の利用実績を確認 複合機に認証ログイン後 そのユーザの利用実績を表示することができます ほかに 出力枚数の削減に効果的な両面出力の比率や 2in1などのページ カラーでの出力ページ数や カラー比率を確認できるので カラー出力の使い 集約比率も碓認できるので 利用者の効率出力の利用意識を高めることが

More information

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP itexamdump 최고이자최신인 IT 인증시험덤프 http://www.itexamdump.com 일년무료업데이트서비스제공 Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 大東ビジネスインターネットバンキング SPEED ONE 電子証明書ログイン方式手順書 ログイン編 Windows7 Windows8 共通 . 電子証明書利用時のご注意事項 電子証明書利用時のご注意事項について記載します () 同一 PC を複数ユーザで利用する場合の注意事項同一 Windows アカウントで複数の電子証明書をインストールした場合 インストールしている全ての電子証明書に紐付く利用者

More information

1.InternetExplorer のバージョン確認手順 1 InternetExplorer を起動します 2 メニューバーより ヘルプ バージョン情報 を選択します メニューバーが表示されていない場合は F10 キーでメニューバーを表示してください 2

1.InternetExplorer のバージョン確認手順 1 InternetExplorer を起動します 2 メニューバーより ヘルプ バージョン情報 を選択します メニューバーが表示されていない場合は F10 キーでメニューバーを表示してください 2 作業を始める前に 作業実施の前提条件として お使いのパソコンが以下の環境の場合に作業が必要となります 他の環境の場合は作業を実施する必要はございません 対象の OS( オペレーティングシステム ) Windows7 WindowsXP をおつかいの教室につきましては作業の必要はありません 対象の InternetExplorer バージョン InternetExplorer8 バージョン確認方法につきましては

More information

概要 ABAP 開発者が SAP システム内の SAP ソースまたは SAP ディクショナリーオブジェクトを変更しようとすると 2 つのアクセスキーを入力するよう求められます 1 特定のユーザーを開発者として登録する開発者キー このキーは一度だけ入力します 2 SAP ソースまたは SAP ディクシ

概要 ABAP 開発者が SAP システム内の SAP ソースまたは SAP ディクショナリーオブジェクトを変更しようとすると 2 つのアクセスキーを入力するよう求められます 1 特定のユーザーを開発者として登録する開発者キー このキーは一度だけ入力します 2 SAP ソースまたは SAP ディクシ オンラインヘルプ :SAP ソフトウェア変更登録 (SSCR) キーの登録 目次 概要... 2 参考リンク... 3 アプリケーションの起動... 4 アプリケーションとメインコントロールの概要... 5 キーリストのカスタマイズ... 7 リストのフィルタリング... 7 表のレイアウトのカスタマイズ... 8 新しい開発者の登録... 10 新しいオブジェクトの登録... 12 特定のインストレーションから別のインストレーションに個々の

More information

個人住民税納付サービス

個人住民税納付サービス 個人住民税納付サービス 個人住民税納付サービスとは 個人住民税納付サービス は 貴社の口座から 個人住民税額を振込み納付するサービスです 個人住民税納付サービスの処理の流れは 次のとおりです 1 納付データ作成 ( 金額 資金引落口座 振込日の入力 ) 各市区町村に振込む税額 振込日 ( 納付期日 ) などを入力して 納付データを作成します 送信が正常に終了すると 送信完了画面が表示されます 送信したデータは

More information

目次 1. はじめに x-servlet の SNMP エージェント設定... 3 ACL ファイルの作成... 3 start.bat の編集 サーバ ID によるサーバ再接続設定... 5 irule の作成... 5 Persistence Profile の作

目次 1. はじめに x-servlet の SNMP エージェント設定... 3 ACL ファイルの作成... 3 start.bat の編集 サーバ ID によるサーバ再接続設定... 5 irule の作成... 5 Persistence Profile の作 x-servlet のヒープメモリモニタによるロードバランシング設定 更新履歴 2010/09/01 本手順書の用途を記述した はじめに 項を追加 start.bat の記述に 2.8.3 での変更点を反映 irule 設定に関する注釈を追記 2011/03/31 2.9 よりサーバ ID 接頭辞 接尾辞のデフォルト文字列が変更になったため それに伴い修正 (_ _- _) -_ pg. 1 目次

More information

タイトル位置

タイトル位置 PrimeDrive Release Note 2014 年 9 月 28 日リリース 2014 年 9 月 19 日ソフトバンクテレコム株式会社クラウドサービス本部クラウドサービス企画部 リリース内容 (1/3) 1. コーポレート管理者機能 1.1 ユーザ検索時に英大文字 / 英小文字を区別せずに検索するように変更 1.2 ユーザポリシーの設定項目の追加 1DTA 利用の可否 2 モバイル端末で他のアプリからのファイルアップロード先の指定の可否

More information

design071024

design071024 h t t p:// w w w.am t s. jp ソフトの 特 徴-はじめに Marketprace Transaction System アンツプロは A m a z o n マ ー ケ ッ ト プ レ イ ス で の 古 本 販 売を総合的に 支 援 す る 業 務 ソ フ ト で す そ の他 DVD C D 等 に も 対 応 煩雑な 出品 登 録 作 業 か ら 商 品 管 理 価

More information

ウツタイン様式調査オンライン処理システム

ウツタイン様式調査オンライン処理システム 別添 1 1 1 はじめに 平成 26 年度の救急業務実態調査については 統計調査系システムの救急 ウツタイン様式調査業務 ( 以下 救急 ウツタイン調査業務 という ) を利用して報告することとなっております 平成 20 年度からは 原則的に現況調べデータによる報告は廃止されています 本書は 平成 26 年度における統計調査系システムの救急 ウツタイン様式調査業務を用いた報告方法 に適用します (1)

More information

Ontrack EasyRecovery 11 基本的な使い方

Ontrack EasyRecovery 11 基本的な使い方 1.Ontrack EasyRecovery 11 の基本的な使い方 1Ontrack EasyRecovery 11 を起動し 画面右下の 次へ をクリックします ここの画面 操作は Ontrack EasyRecovery 11 Home for Windows を使用した例となります 2 下記の メディアの種類を選択 の画面になりますので 復旧対象のディスクを選択し 次へ をクリックしてください

More information

1 グループ管理者とは ページ設定 ( グループページの設定 ) を行うことができるのがグループ管理者です グループ管理者はパーツのレイアウト変更や グループメンバーの権限設定 メンバーの招待などグループページ内の管理について様々に設定することができます 例えば町内会でグループページを作成し運用して

1 グループ管理者とは ページ設定 ( グループページの設定 ) を行うことができるのがグループ管理者です グループ管理者はパーツのレイアウト変更や グループメンバーの権限設定 メンバーの招待などグループページ内の管理について様々に設定することができます 例えば町内会でグループページを作成し運用して ページ設定や参加メンバーの設定 eコミのデザインを決めるスキンの設定など 一般ユーザー にはできず グループ管理者 / 副管理者 のみができる操作について説明していきます 1 グループ管理者とは ページ設定 ( グループページの設定 ) を行うことができるのがグループ管理者です グループ管理者はパーツのレイアウト変更や グループメンバーの権限設定 メンバーの招待などグループページ内の管理について様々に設定することができます

More information

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid(text_box02_id); if (001 == statee 全体のヒント 1. テキストボックスの制御 1.1. 日付入力日付の入力ボックスは フォーカスが入った時にスラッショを消し フォーカスが他の項目等に移るとスラッシュが加わるようにする オンフォーカス 20100101 オフフォーカス 2010/01/01 1.1.1 オンフォーカス時にスラッシュを消す入力項目のスラッシュを消すには include/function.js ファイル内の var delslash

More information

SQL インジェクションの脆弱性

SQL インジェクションの脆弱性 別紙 脆弱性体験学習ツール AppGoat ハンズオンセミナー 演習解説 SQL インジェクションの脆弱性 [ 演習 ] AppGoat を用いた疑似攻撃体験 SQL インジェクションのテーマ 不正なログイン ( 文字列リテラル ) 画面上に Congratulations!! と表示されると演習クリアです 3 脆弱性のある箇所を特定する ログイン ID またはパスワードにシングルクォート ' を入力し

More information

ESET NOD32 アンチウイルス 6 リリースノート

ESET NOD32 アンチウイルス 6 リリースノート ====================================================================== ESET NOD32 アンチウイルス 6 リリースノート キヤノンITソリューションズ株式会社 ====================================================================== はじめにキヤノンITソリューションズ製品をご愛顧いただき誠にありがとうございます

More information

8. 適用 を後 OK をしウインドウを閉じてください 2. パソコンと LCV3 を LAN ケーブルで接続し 設定を行います Windows パソコンの推奨環境は以下の通りです (2015 年 6 月現在 ) OS : Windows XP Vista 7 8 CPU : 32bit 64bit

8. 適用 を後 OK をしウインドウを閉じてください 2. パソコンと LCV3 を LAN ケーブルで接続し 設定を行います Windows パソコンの推奨環境は以下の通りです (2015 年 6 月現在 ) OS : Windows XP Vista 7 8 CPU : 32bit 64bit 2015.10.8 マスプロ電工株式会社 本手順書は デジタルレベルチェッカー LCV3 の Web ブラウザーによるソフトウェア更新の手順を説明した資料です Web ブラウザーより LCV3 をバージョンアップする手順は以下の 4 段階で実施します 1. パソコン上に新しいソフトウェアをコピーします 2. パソコンと LCV3 を LAN ケーブルで接続します 3. LCV3 を新しいソフトウェアに更新します

More information

Java知識テスト問題

Java知識テスト問題 Java 知識テスト SDAS プログラマ(Java 編 ) 運営事務局 このテストは J2EE プログラマとしての Java の知識を評価するものです 問題は 30 問, テスト時間は J2EE 知識テストとあわせて 90 分です 問題は全て択一式です 選択肢から 1 つだけ選択してください 資料の閲覧は禁止です テストが終わり次第 答案用紙を提出していただいてかまいません テスト終了後, 本テストの内容を他の方に話さないでください

More information

< はじめに > 推奨環境インターネット伝送サービスをご利用いただくための推奨環境は以下の通りです OS ブラウザソフト Microsoft Windows Vista Microsoft Internet Explorer 8 Microsoft Windows 7(32bit/64bit) Mi

< はじめに > 推奨環境インターネット伝送サービスをご利用いただくための推奨環境は以下の通りです OS ブラウザソフト Microsoft Windows Vista Microsoft Internet Explorer 8 Microsoft Windows 7(32bit/64bit) Mi WEB-EDI 操作マニュアル ご注意 0:00~23:59 にお支払いの完了したデータは 翌日 13:30 以降より受信が可能です データにつきましては サーバへデータを用意した日 ( 収納日の翌日 ) から 30 日間を過ぎますと 消去されますので期間内に必ず受信してください 受信用のアドレスはこちらになります https://e-shiharai.net/webedi/ ver.5.0 版

More information

Rational Roseモデルの移行 マニュアル

Rational Roseモデルの移行 マニュアル Model conversion from Rational Rose by SparxSystems Japan Rational Rose モデルの移行マニュアル (2012/1/12 最終更新 ) 1. はじめに このガイドでは 既に Rational( 現 IBM) Rose ( 以下 Rose と表記します ) で作成された UML モデルを Enterprise Architect で利用するための作業ガイドです

More information

インストール手順 2 セットアップの種類 [ 標準インストール (S)] [Thunderbird を既定のメールプログラムとして使用する (U)] にチェックを入れ [ 次へ (N)] をクリックします インストール手順 3 セットアップ設定の確認 [ インストール (I)] をクリックします 2

インストール手順 2 セットアップの種類 [ 標準インストール (S)] [Thunderbird を既定のメールプログラムとして使用する (U)] にチェックを入れ [ 次へ (N)] をクリックします インストール手順 3 セットアップ設定の確認 [ インストール (I)] をクリックします 2 Mozilla Thunderbird メール編 本書では Thunderbird メールの設定方法を説明します 目次 P1 1 Thunderbirdメールのインストール P4 2 メールアカウントの登録 P11 3 メールアカウント設定の確認 P15 4 接続ができない時には ( 再設定 ) P17 5 設定の変更をしていないのに メールが送受信できなくなった P18 6 メール送信形式の設定

More information

Sol-005 可視化とRCSA _ppt [互換モード]

Sol-005 可視化とRCSA _ppt [互換モード] 資料番号 SOL-005 RCSA 管理 (Risk Control Self Assessment ) 株式会社アイグラフィックス (1) オペリスクの可視化 業務プロセスにオペレーション関す潜在リスクや固有リスクの情報を記述し リスクの頻度や損失規模に関する情報も加え業務プロセス指向で可視化と管理を行います 内部統制管理で記述されたリスクやコントロール情報を参照することでリスクの漏れを防ぎ網羅性のあるオペリスク管理が行えます

More information

セットアップカード

セットアップカード NEC COBOL SQL アクセス Client Runtime Ver1.0 COBOL SQL アクセス Client Runtime Ver1.0 (1 年間保守付 ) COBOL SQL アクセス Client Runtime Ver1.0 (1 年間時間延長保守付 ) セットアップカード ごあいさつ このたびは COBOL SQL アクセス Client Runtime Ver1.0 (

More information

改版履歴 版数改版履歴改版年月日 1.0 新規作成 2015/03/31 Page 2 NEC Corporation 2015

改版履歴 版数改版履歴改版年月日 1.0 新規作成 2015/03/31 Page 2 NEC Corporation 2015 CLUSTERPRO MC RootDiskMonitor 2.0 for Windows CLUSTERPRO MC StorageSaver for BootDisk 2.0 (for Windows) パラメータシート 第 1 版 2015 年 3 月 31 日 日本電気株式会社 改版履歴 版数改版履歴改版年月日 1.0 新規作成 2015/03/31 Page 2 NEC Corporation

More information

3. ユーザー情報の登録 必要事項をご入力の上 申込み ボタンを押してください ご利用される方のお名前を入力してください 個人名以外の名称は サポートセンターからの ご連絡の際に連絡がうまくとれないなど不都合が 生じる恐れがありますので ご遠慮いただいています 複数のメールアドレスを登録することはで

3. ユーザー情報の登録 必要事項をご入力の上 申込み ボタンを押してください ご利用される方のお名前を入力してください 個人名以外の名称は サポートセンターからの ご連絡の際に連絡がうまくとれないなど不都合が 生じる恐れがありますので ご遠慮いただいています 複数のメールアドレスを登録することはで Ashisuto Web Support Center AWSC ユーザーガイド 1.アカウント登録手順... 1 2.ログイン手順... 5 3.アカウント登録内容の変更手順... 6 4.問い合わせ登録手順... 10 5.問い合わせ更新手順... 12 6.ファイルアップロード手順... 16 7.パスワードがご不明の場合... 21 [ 1 ] アカウント登録手順 1. アカウント登録ページへのアクセス

More information

help_ja

help_ja interviewscribe ユーザーズガイド ヤナセ 2012 1 1. 概要 interviewscribeは テープ起こし作業を効率的に行うためのツールです フレーズ分割 interviewscribeでは音声データを 発音している部分毎に分割し フレーズ として管理します フレーズに分割することで 数秒のフレーズ毎に聞き取り作業を進められ 再生 聞き取り テキス ト変換の一連の作業をスムーズに進めることが出来ます

More information

操作説明書(抜粋)_2013_03

操作説明書(抜粋)_2013_03 4.1.1 マルチモニタリング画面 4 DG シリーズネットワークカメラおよび一部の BB シリーズネットワークカメラを使用する場合は 4.1 仕様の違いについて DG シリーズネットワークカメラおよび一部の BB シリーズネットワークカメラを本プログラムに登録して使用する場合は 本説明書に記載の内容と一部仕様が異なります 機能制限のあるネットワークカメラについては 4 ページを参照してください ネットワークビデオエンコーダー

More information

インターネットフィルタリング簡単マニュアル

インターネットフィルタリング簡単マニュアル セキュリティ安心 Windows8 版フィルタリングソフト 簡単マニュアル インターネットフィルタリングのインストール インターネットフィルタリングの初期設定 インターネットフィルタリングの使い方 インターネットフィルタリングのWeb 管理 インターネットフィルタリングのアンインストール インターネットフィルタリングの再インストール よくあるご質問 お問い合わせ先 インターネットフィルタリングのインストール

More information

目次 1. はじめに ライセンス証書の受領 ライセンス証書に含まれる内容 環境前提条件 準備 インストール環境の確認 ファイル インストール インストール後の Dr

目次 1. はじめに ライセンス証書の受領 ライセンス証書に含まれる内容 環境前提条件 準備 インストール環境の確認 ファイル インストール インストール後の Dr Dr.Web KATANA for Windows Ver.1.0 インストールガイド 株式会社 Doctor Web Pacific 初版 : 2015/11/04 改訂 : 2015/11/12 目次 1. はじめに... 3 1.1 ライセンス証書の受領... 3 1.2 ライセンス証書に含まれる内容... 3 2. 環境前提条件... 3 3. 準備... 4 3.1 インストール環境の確認...

More information

1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452

1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452 HDE Controller X 1-36. LGWAN の設定 1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452 HDE Controller X ユーザーマニュアル

More information

分析のステップ Step 1: Y( 目的変数 ) に対する値の順序を確認 Step 2: モデルのあてはめ を実行 適切なモデルの指定 Step 3: オプションを指定し オッズ比とその信頼区間を表示 以下 このステップに沿って JMP の操作をご説明します Step 1: Y( 目的変数 ) の

分析のステップ Step 1: Y( 目的変数 ) に対する値の順序を確認 Step 2: モデルのあてはめ を実行 適切なモデルの指定 Step 3: オプションを指定し オッズ比とその信頼区間を表示 以下 このステップに沿って JMP の操作をご説明します Step 1: Y( 目的変数 ) の JMP によるオッズ比 リスク比 ( ハザード比 ) の算出と注意点 SAS Institute Japan 株式会社 JMP ジャパン事業部 2011 年 10 月改定 1. はじめに 本文書は JMP でロジスティック回帰モデルによるオッズ比 比例ハザードモデルによるリスク比 それぞれに対する信頼区間を求める操作方法と注意点を述べたものです 本文書は JMP 7 以降のバージョンに対応しております

More information

HP USB Port Managerご紹介資料 -シンクライアント

HP USB Port Managerご紹介資料 -シンクライアント HP USB Port Manager ご紹介資料 株式会社日本 HP パーソナルシステムズ事業本部クライアントソリューション本部 2015 年 11 月 ソリューションビジネス部 HP USB Port Manager とは これまで HP シンクライアント用に提供していたツールでは 書き込み 読み込み 無効化の設定はすべての USB ストレージデバイスが対象でした 新しくリリースした HP USB

More information

UsageGuidewithAD_

UsageGuidewithAD_ Windows 端末向け MobiConnect Active Directory 併 時のガイドライン 2016 年 3 10 インヴェンティット株式会社 "Don't worry about what anybody else is going to do... The best way to predict the future is to invent it." 本資料には関係者外秘内容が含まれております

More information

ESET Mobile Security for Android V1.1 セットアップ手順

ESET Mobile Security for Android V1.1 セットアップ手順 ESET Mobile Security for Android V1.1 セットアップ手順 キヤノン IT ソリューションズ株式会社最終更新日 2016/12/08 1 目次 1. はじめに... 3 2. ESET Mobile Security for Android V1.1 のインストール... 4 3. ESET Mobile Security for Android V1.1 のアンインストール...

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション タグプレビューガイド 本資料に掲載している情報は 2014 年 2 月現在の内容です Yahoo! タグマネージャーでは さまざまな機能改善を行っているため 実際の画面やボタンの名称などが異なる場合があります ver.1.0.1 Yahoo! JAPAN が提供するタグマネジメントサービスについて Yahoo! JAPAN は BrightTag 社の技術を利用したタグマネジメントサービスを Yahoo!

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 消費税率 8% 対応マニュアル (Ver14.3.0 リリース ) 目次 0. 目次 1 1.2014 年 4 月 1 日以降に新規で利用する方は 2 2.2014 年 3 月 31 日以前から利用している方は 3 3. 消費税率一括変換機能について 4 3-1. 勘定科目の一括変換について 5 3-2. 補助科目の一括変換について 6 3-3. 仕訳パターンにおける税率一括変換について 7 3-4.CSV

More information

スライド 0

スライド 0 第 2 章情報記入とプラン地図上に情報記入や 行動計画をシミュレーションするプランの説明をします 2-1 カスタム情報の記入カスタム情報とは 地図上に名称 ( タイトル ) としてアイコンと文字 ( または画像 ) を表示し 内部に住所などのコメントや写真 動画 EXCEL ファイル PDF Web リンクを持つことができるものです 初期状態 ( デフォルト ) では テキスト作成時の動作は カスタム情報記入ウィザードを開くように設定されています

More information

ライセンスの注意事項 サーババンドル版のライセンスについてサーババンドル版では 通常のサーバライセンスおよび 4 コアライセンスを ベースライセンス 追加サーバライセンスおよび追加 2 コアライセンスを 追加ライセンス と呼びます 1 台の物理サーバに対してベースライセンスは 1 つしか購入すること

ライセンスの注意事項 サーババンドル版のライセンスについてサーババンドル版では 通常のサーバライセンスおよび 4 コアライセンスを ベースライセンス 追加サーバライセンスおよび追加 2 コアライセンスを 追加ライセンス と呼びます 1 台の物理サーバに対してベースライセンスは 1 つしか購入すること SQL Server 2017 Microsoft SQL Server 2017 は 以下の製品群で構成されています データベース サーバ SQL Server 2017 Enterprise Edition SQL Server 2017 Enterprise Edition は 非常に優れたパフォーマンス 無制限の仮想化 およびミッションクリティカルなワークロードのための高水準のサービスレベル構築に適したエディションです

More information

構造解析マニュアル@RDstr

構造解析マニュアル@RDstr 構造解析マニュアル @RDstr ~ 片持ち梁の弾性静解析 ~ 岐阜高専構造解析学研究室 H270608 版 1. 解析モデル 下に示すような長さ 1000mm 高さ 100mm 幅 200mm の片持ち梁の弾性解析を行う 2. Salome-meca でのメッシュの作成 1 1 アイコンをクリックして Salome-meca を起動する 2 2 ジオメトリのアイコンをクリックする 表示されるウィンドウで

More information

NortonAntiVirus for MicrosoftExchange

NortonAntiVirus for MicrosoftExchange NortonAntiVirus for MicrosoftExchange インストール手順書 このドキュメントは NortonAntiVirus 2.5 for MicrosoftExchange のインストール手順を示します 2001 年 7 月 1 1.. Norton AntiVirus for Microsoft Exchange のアンインストール まず 以前のバージョンの NortonAntiVirus

More information

16年度第一回JACB品質技術委員会

16年度第一回JACB品質技術委員会 ISO9001 次期改正の状況 DIS 版と 2008 年版の新旧箇条対照表 公開される ISO DIS14001 には 2004 年版との新旧箇条対応表が附属書 B としてついていますが ISO DIS9001 にはついていないので不便です - TC176/SC2 は最近 そのウエブサイト (http://isotc.iso.org/livelink/livelink/f etch/2000/2122/-8835176/-8835848/8835872/8835883/iso

More information

はじめに この資料は データデデュプリケーション機能を検討いただくにあたり ディスク使用率とバックアップパフォーマンスについて データデデュプリケーションデバイス ( 以降 DDD と記述 ) とファイルシステムデバイス ( 以降 FSD と記述 ) を比較した資料になります FSD は ローカルマ

はじめに この資料は データデデュプリケーション機能を検討いただくにあたり ディスク使用率とバックアップパフォーマンスについて データデデュプリケーションデバイス ( 以降 DDD と記述 ) とファイルシステムデバイス ( 以降 FSD と記述 ) を比較した資料になります FSD は ローカルマ Rev. 1.5 arcserve Backup データデデュプリケーション 効果測定 Arcserve Japan はじめに この資料は データデデュプリケーション機能を検討いただくにあたり ディスク使用率とバックアップパフォーマンスについて データデデュプリケーションデバイス ( 以降 DDD と記述 ) とファイルシステムデバイス ( 以降 FSD と記述 ) を比較した資料になります FSD

More information

目次はじめに 必要システム環境 インストール手順 インストール前の注意点 インストールの準備 (.NET Framework3.5 SP1 のインストール ) ライセンスの登録 初期設定情報の入力... 8

目次はじめに 必要システム環境 インストール手順 インストール前の注意点 インストールの準備 (.NET Framework3.5 SP1 のインストール ) ライセンスの登録 初期設定情報の入力... 8 一括請求 Assist 操作マニュアル インストール編 第 1.7 版 目次はじめに...3 1 必要システム環境...4 2 インストール手順...5 2.1 インストール前の注意点... 5 2.2 インストールの準備 (.NET Framework3.5 SP1 のインストール )... 5 2.3 ライセンスの登録... 8 2.4 初期設定情報の入力... 8 2.5 インストール先の選択...

More information