スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス

[目次][索引][前へ][次へ]

2.24.4 SQL最適化指定の例

SQL最適化指定の使用例を次に示します。

  1. SELECT文中に,使用インデクスのSQL最適化指定を指定します。このとき,在庫表(ZAIKO)の検索に,インデクス(IDX1)を使用します。
     
    SELECT SNAME FROM ZAIKO WITH INDEX (IDX1)
      WHERE TANKA <= 500
     
  2. SELECT文中に,使用インデクスのSQL最適化指定を指定します。このとき,在庫表(ZAIKO)の検索に,複数のインデクス(IDX1,IDX2)を使用します。
     
    SELECT SNAME FROM ZAIKO WITH INDEX (IDX1,IDX2)
      WHERE TANKA <= 500 OR ZSURYO > 100
     
  3. SELECT文中に,使用インデクスのSQL最適化指定を指定します。このとき,在庫表(ZAIKO)定義時に,PRIMARY KEYを指定して定義されたインデクスを使用します。
     
    SELECT SNAME FROM ZAIKO WITH INDEX (PRIMARY KEY)
      WHERE TANKA <= 500
     
  4. SELECT文中に,使用インデクスのSQL最適化指定を指定します。このとき,在庫表(ZAIKO)の検索に,インデクス利用を抑止(テーブルスキャン)します。
     
    SELECT SNAME FROM ZAIKO WITHOUT INDEX
      WHERE TANKA <= 500
     
  5. SELECT文中に,結合方式のSQL最適化指定を指定します。このとき,内結合の結合方式を,ネストループジョイン又は分散ネストループジョインにします。
     
    SELECT ZAIKO.SCODE,ZAIKO.SNAME,JUTYU.TCODE
      FROM ZAIKO INNER JOIN BY NEST JUTYU
        ON ZAIKO.SCODE = JUTYU.SCODE
     
  6. SELECT文中に,結合方式のSQL最適化指定を指定します。このとき,外結合の結合方式を,ハッシュジョインにします。
     
    SELECT ZAIKO.SCODE,ZAIKO.SNAME,JUTYU.TCODE
      FROM ZAIKO LEFT OUTER JOIN BY HASH JUTYU
        ON ZAIKO.SCODE = JUTYU.SCODE
     
  7. SELECT文中に,結合方式のSQL最適化指定を指定します。このとき,内結合(INNER省略)の結合方式を,マージジョインにします。
     
    SELECT ZAIKO.SCODE,ZAIKO.SNAME,JUTYU.TCODE
      FROM ZAIKO JOIN BY MERGE JUTYU
        ON ZAIKO.SCODE = JUTYU.SCODE
     
  8. SELECT文中に,副問合せ実行方式のSQL最適化指定を指定します。このとき,副問合せの実行方式を,ハッシュ実行にします。
     
    SELECT SNAME FROM ZAIKO
      WHERE SCODE =ANY
        (HASH SELECT SCODE FROM JUTYU
           WHERE TCODE = '302S')
     
  9. SELECT文中に,副問合せ実行方式のSQL最適化指定を指定します。このとき,副問合せの実行方式を,ハッシュ実行以外(この例では,作業表実行,又は作業表ATS実行となる)にします。
     
    SELECT SNAME FROM ZAIKO
      WHERE SCODE =ANY
        (NO HASH SELECT SCODE FROM JUTYU
          WHERE TCODE = '302S')
     
  10. 使用インデクスのSQL最適化指定を,「/*>>」と「<<*/」で囲んで指定します。
     
    SELECT SNAME FROM ZAIKO /*>> WITH INDEX (IDX1) <<*/
      WHERE TANKA <= 500
     
  11. 結合方式のSQL最適化指定を,「/*>>」と「<<*/」で囲んで指定します。
     
    SELECT ZAIKO.SCODE,ZAIKO.SNAME,JUTYU.TCODE
      FROM ZAIKO INNER JOIN /*>> BY NEST <<*/ JUTYU
        ON ZAIKO.SCODE = JUTYU.SCODE
     
  12. 副問合せ実行方式のSQL最適化指定を,「/*>>」と「<<*/」で囲んで指定します。
     
    SELECT SNAME FROM ZAIKO
      WHERE SCODE =ANY
        (/*>> HASH <<*/ SELECT SCODE FROM JUTYU
          WHERE TCODE = '302S')
     
  13. SELECT文中に,結合方式のSQL最適化指定と使用インデクスのSQL最適化指定を指定します。このとき,在庫表(ZAIKO)の検索にインデクス(IDX3)を使用し,内結合(INNER省略)の結合方式をハッシュジョインにします。
     
    SELECT ZAIKO.SCODE,ZAIKO.SNAME,JUTYU.TCODE
      FROM ZAIKO WITH INDEX (IDX3) JOIN BY HASH JUTYU
        ON ZAIKO.SCODE = JUTYU.SCODE
     
  14. SELECT文中に,結合方式のSQL最適化指定と使用インデクスのSQL最適化指定を,それぞれ「/*>>」と「<<*/」で囲んで指定します。このとき,在庫表(ZAIKO)の検索にインデクス(IDX3)を使用し,内結合(INNER省略)の結合方式をハッシュジョインにします。
     
    SELECT ZAIKO.SCODE,ZAIKO.SNAME,JUTYU.TCODE
      FROM ZAIKO /*>> WITH INDEX (IDX3) <<*/ JOIN /*>> BY HASH <<*/ JUTYU
        ON ZAIKO.SCODE = JUTYU.SCODE