この例では、基本テーブルのcustomerとorder_tblの結合結果に対して定義されたMINおよびMAX関数を使用する、単純な集約結合インデックスを示します。
CREATE TABLE customer ( c_custkey INTEGER not null, c_name CHARACTER(26) CASESPECIFIC NOT NULL, c_address VARCHAR(41), c_nationkey INTEGER, c_phone CHARACTER(16), c_acctbal DECIMAL(13,2), c_mktsegment CHARACTER(21), c_comment VARCHAR(127)) UNIQUE PRIMARY INDEX( c_custkey );
CREATE TABLE order_tbl ( o_orderkey INTEGER NOT NULL, o_custkey INTEGER, o_orderstatus CHARACTER(1) CASESPECIFIC, o_totalprice DECIMAL(13,2) NOT NULL, o_orderdate DATE FORMAT 'yyyy-mm-dd' NOT NULL, o_orderpriority CHARACTER(21), o_clerk CHARACTER(16), o_shippriority INTEGER, o_comment VARCHAR(79)) UNIQUE PRIMARY INDEX(o_orderkey);
MINおよびMAX関数を使用して、order_tblとcustomerに対する集約結合インデックスord_cust_idxを定義します。
CREATE JOIN INDEX ord_cust_idx AS SELECT c_nationkey, o_orderdate, MIN(o_totalprice) AS min_price, MAX(o_totalprice) AS max_price FROM order_tbl, customer WHERE o_custkey = c_custkey GROUP BY c_nationkey,o_orderdate ORDER BY o_orderdate;
以下のクエリーは、最適化ルーチンがどのようにクエリーを書き換え、ord_cust_idxを使用して基本テーブルを置き換えるようにするかを示す例として提供されます。SUM step句は、集約式を表わします。この例では、c_nationkey列をグループ化して、集約結合インデックスに対しMIN集約を実行します。SELECT文のEXPLAINには、条件( "(ord_cust_idx.O_ORDERDATE > DATE '1998-09-20') AND (ord_cust_idx.O_ORDERDATE < DATE '1998-10-15')")で結合インデックス テーブルord_cust_idxから集約するSUMステップが含まれます。
SELECT COUNT(*), MIN(o_totalprice) FROM order_tbl, customer WHERE o_custkey = c_custkey AND o_orderdate > DATE ‘1998-09-20’ AND o_orderdate < DATE ‘1998-10-15’ GROUP BY c_nationkey;