end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

sybase dbにおけるquery plan 表示(explain analyze)は、「set showplan on」

set showplan on
go

と実行すると、mysqlで言う explain analyzeを表示できます。

まぁ、表示内容が mysql等と異なるので、表示されたquery planを理解できていませんが...

select pja.goods_code,
       pja.project_name,
       pja.entry_day,
       count(pla.goods_code)
from project_attr pja
join plan_attr pla
  on pla.goods_code=pja.goods_code and
     pla.xerial_g_number=pja.xerial_g_number
where pja.entry_day > '20230101'
group by pja.goods_code, pja.project_name, pja.entry_day
order by pja.entry_day

go

↑こう書くと、↓このように表示

文 1 (1 行目) のクエリプラン。
Serial モードを使用した最適化
    STEP 1
        クエリのタイプは SELECT です。
        5 operator(s) under root
       |ROOT:EMIT Operator (VA = 5)
       |   |GROUP SORTED Operator (VA = 4)
       |   |  グループ化された COUNT AGGREGATE を評価します。
       |   |   |NESTED LOOP JOIN Operator (VA = 3) (Join Type: Inner Join)
       |   |   |   |SORT  Operator (VA = 1)
       |   |   |   | ワークテーブル 1 を内部記憶に使用しています。
       |   |   |   |   |SCAN Operator (VA = 0)
       |   |   |   |   |  FROM TABLE
       |   |   |   |   |  project_attr
       |   |   |   |   |  pja
       |   |   |   |   |  テーブルスキャンです。
       |   |   |   |   |  前方スキャン
       |   |   |   |   |  テーブルの最初に位置付けます。
       |   |   |   |   |  データページに対して I/O サイズ 16 キロバイトを使用しています。
       |   |   |   |   |  データページに対する LRU でのバッファ置換方式
       |   |   |   |SCAN Operator (VA = 2)
       |   |   |   |  FROM TABLE
       |   |   |   |  plan_attr
       |   |   |   |  pla
       |   |   |   |  インデックス:  plan_attr_goods_code
       |   |   |   |  前方スキャン
       |   |   |   |  キーによって位置付けます。
       |   |   |   |  キー:
       |   |   |   |    goods_code ASC
       |   |   |   |  インデックスリーフページに対して I/O サイズ 16 キロバイトを使用しています。
       |   |   |   |  インデックスリーフページに対する LRU でのバッファ置換方式
       |   |   |   |  データページに対して I/O サイズ 16 キロバイトを使用しています。
       |   |   |   |  データページに対する LRU でのバッファ置換方式
【略】
select pja.goods_code,
       pja.project_name, 
       pja.entry_day, 
       count(pla.goods_code)
  from plan_attr pla, 
       project_attr pja
 where pja.entry_day > '20230101' and
       pla.goods_code=pja.goods_code and
       pla.xerial_g_number=pja.xerial_g_number
group by pja.goods_code, pja.project_name, pja.entry_day
order by pja.entry_day

↑こう書くと、↓このように表示

文 1 (5 行目) のクエリプラン。
Serial モードを使用した最適化

    STEP 1
        クエリのタイプは SELECT です。
        5 operator(s) under root
       |ROOT:EMIT Operator (VA = 5)
       |   |GROUP SORTED Operator (VA = 4)
       |   |  グループ化された COUNT AGGREGATE を評価します。
       |   |   |NESTED LOOP JOIN Operator (VA = 3) (Join Type: Inner Join)
       |   |   |   |SORT  Operator (VA = 1)
       |   |   |   | ワークテーブル 1 を内部記憶に使用しています。
       |   |   |   |   |SCAN Operator (VA = 0)
       |   |   |   |   |  FROM TABLE
       |   |   |   |   |  project_attr
       |   |   |   |   |  pja
       |   |   |   |   |  テーブルスキャンです。
       |   |   |   |   |  前方スキャン
       |   |   |   |   |  テーブルの最初に位置付けます。
       |   |   |   |   |  データページに対して I/O サイズ 16 キロバイトを使用しています。
       |   |   |   |   |  データページに対する LRU でのバッファ置換方式
       |   |   |   |SCAN Operator (VA = 2)
       |   |   |   |  FROM TABLE
       |   |   |   |  plan_attr
       |   |   |   |  pla
       |   |   |   |  インデックス:  plan_attr_goods_code
       |   |   |   |  前方スキャン
       |   |   |   |  キーによって位置付けます。
       |   |   |   |  キー:
       |   |   |   |    goods_code ASC
       |   |   |   |  インデックスリーフページに対して I/O サイズ 16 キロバイトを使用しています。
       |   |   |   |  インデックスリーフページに対する LRU でのバッファ置換方式
       |   |   |   |  データページに対して I/O サイズ 16 キロバイトを使用しています。
       |   |   |   |  データページに対する LRU でのバッファ置換方式
【略】