2016-12-17 105 views
1

我有一個表名x,它包含week-no,其中星期數的數據類型是varchar2,它在22秒內獲取max(week-no)。 我需要獲取,最大周沒有 排我想這下面的查詢:oracle中max函數的查詢優化

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

請幫助和建議,可以花費較少的時間查詢。

回答

2

首先,創建函數索引:

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

我認爲Oracle應該足夠聰明地使用索引的查詢。如果沒有,你可以嘗試:

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)和索引。