zadania
Przygotuj kopie tabeli dba_objects pod nazwa t1 (CTAS) w tablespace users ,
nastepnie na t1:
- przelicz statystyki bez histogramow
- ustaw preferencje t1 dot. statystyk aby histogramy nie byly liczone
- sprawdz rozmiar t1 w bajtach
- dodaj struktury optymalne dla zapytan:
select * from t1 where owner = 'SYS'
select owner,object_name from t1 where object_id between 1 and 1000 order by object_name desc
select owner,object_name from t1 where object_id + 1 = 111111 order by object_name desc
select * from t1 where object_id between 2 and 222 and data_object_id = 102211 and owner not in ('SYS')
- wykonaj update 1 wiersza z object_id jakims na NULL
zoptymalizuj zapytanie:
select data_object_id from t1 where object_id is NULL
zoptymalizuj zapytanie znajdujace min(data_object_id) and max(data_object_id) w jednym selekcie.
- wyswietlij wszystkie plany tak aby posiadac informacje o buffer gets(albo odpowiednik)
skopiuj tabele dba_objects pod nazwa t2 w przestrzeni users
- dodaj strukture optymalizujaca zapytanie:
select object_name from t2 where lower(owner)='hr'
and object_name like 'EMP%';
- przedstaw 3 typy joinow tabeli t1 i t2
uzywajac hinty i sterujac kolejnoscia zlaczen
skopiuj 100 rekordow z tabeli dba_objects do tabeli t3 w przestrzeni users
- przelicz statsy z uwzglednieniem histogramow na kolumnie owner
- wykonaj join t1 t2 t3 po kolumnie data_object_id
czy otrzymany plan jest optymalny?
- co w przypadku select t3.object_id from t1,t2,t3 where t1.data_object_id = t2.data_object_id and t2.data_object_id = t3.data_object_id ?
- zademonstruj sterowanie kolejnoscia zlaczen dla jednego typu joina
Wymysl zapytanie na t3, ktore w planie wykonania bedzie mialo anti join .
Zablokuj unnest takiego zapytania
Czy tak zablokowany unnest da sie jakos zoptymalizowac?
---
Znajdz zapytanie zuzywajace najwiecej buffer gets w calej bazie
- wyswietl jego plan
- wygeneruj trace 10053 dla tego zapytania
- wymus na nim hard parse