Tak, LOW_VALUE i HIGH_VALUE podają minimalne i maksymalne wartości w kolumnie ale :
- są one przechowywane jako kolumny RAW(32), więc ich znaczenie nie będzie od razu widoczne
- będą one aktualne na dzień ostatniego zebrania statystyk dla tabeli, więc mogą nie być dokładne (chyba że wyraźnie zbierzesz statystyki przed ich użyciem)
Jeśli indeksujesz kolumnę, MIN(a) i MAX(a) powinny być bardzo szybkie, jak w tym przykładzie, w którym T1 ma 50000 wierszy i jest indeksowany na OBJECT_ID:
SQL> select min(object_id) from t1;
MIN(OBJECT_ID)
--------------
100
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 5 | 2 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 5 | | |
| 2 | INDEX FULL SCAN (MIN/MAX)| T1_ID | 53191 | 259K| 2 (0)| 00:00:01 |
------------------------------------------------------------------------------------
Statistics
----------------------------------------------------------
1 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
419 bytes sent via SQL*Net to client
380 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Wynik jest taki sam, jeśli wybierzesz MAX zamiast MIN. Jeśli jednak wybierzesz MIN i MAX w jednej instrukcji select, wynik będzie inny:
SQL> select min(object_id), max(object_id) from t1;
MIN(OBJECT_ID) MAX(OBJECT_ID)
-------------- --------------
100 72809
-------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 5 | 34 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 5 | | |
| 2 | INDEX FAST FULL SCAN| T1_ID | 53191 | 259K| 34 (0)| 00:00:01 |
-------------------------------------------------------------------------------
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
125 consistent gets
0 physical reads
0 redo size
486 bytes sent via SQL*Net to client
380 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
Sugeruje to, że lepiej byłoby je kupić osobno, chociaż nie udowodniłem tego jednoznacznie.