2016-12-17 10 views
1

週番号のデータ型が22秒でmax(week-no)をフェッチするvarchar2のweek-noを含むテーブル名xを使用しています。私は最大週-なし で行フェッチする必要が 私は、クエリの下に、これを試してみました:oracleのmax関数に対するクエリの最適化

select max(to_number(week-no)) 
from x; 

を少ない時間を取ることができ、クエリを支援し、提案してください。私はOracleは、クエリのためにインデックスを使用するのに十分なスマートされるべきだと思う

create index x_weekno_num on x(to_number(week_no)); 

答えて

2

まず、機能的なインデックスを作成します。そうでない場合は、試すことができます:

select week_no_num 
from (select to_number(week_no) as week_no_num 
     from x 
     order by to_number(week_no) desc 
    ) x 
where rownum = 1; 

を私はまた、あなたが文字列として番号を記憶している場合、あなたはその上のゼロ(そう、「01」、「02」としてパッドにそれをする必要があることを指摘しておき)。その場合は、max(week_no)とその列に直接インデックスを使用することができます。