以下のケースの機能インデックスを作成する方法。
CREATE INDEX index1 ON table1(MIN(col1));
以下のエラーが発生しています:SQL Error: ORA-00934: group function is not allowed here
助けてください!
インデックスを作成したい場合は、次のcol1
ようなクエリを高速化します。
SELECT MIN(col1)
FROM table1
その場合、関数インデックスは必要ありません。次のように通常のインデックスを作成するだけです:
CREATE INDEX index1 ON table1(col1);
に機能インデックスを作成すると (可能であれば)、インデックスはすべての行に対してMIN(col1)
同じ値 ( の最小値) を持つことになります。col1
そのようなインデックスはまったく役に立たないでしょう。
より高速に最小値を取得できるようにしたい場合col1
(私が想定しているように)、具体化されたビューを使用できます。
create materialized view table1_mat
refresh on commit
as
select min(col1) min_col1
from table1;
col1 の最小値を取得すると、次のようになります。
select min_col1 from table1_mat;
ただし、最小値を選択すると速度が上がる可能性がありますが、挿入と更新の時間はtable1
遅くなる可能性があることに注意してください。
クエリの書き換えを使用すると、元のクエリをチェーンせずにマテリアライズド ビューを使用することもできます。
alter materiazlied view table1_mat enable query rewrite;
それで
select min(col1) from table1
マテリアライズド ビューを使用する必要があります。