plik


ÿþOptymalizacja SQL, cz[ 2.  zadania Wstp 1. Utwórz w swoim schemacie potrzebne do wiczeD tabele i wypeBnij je danymi. U|yj do tego celu skryptu opt.sql, pobranego ze strony WWW z materiaBami dydaktycznymi. Sprawdz struktur i liczb rekordów relacji ZESP i PRAC. Metody dostpu 2. Wyja[nij plan poni|szego zapytania. Jak metod dostpu wybraB optymalizator do wykonania tego zapytania? select rowid, nazwisko, plec, placa from prac where id_prac = 900; 3. Zdefiniuj zapytanie, które odczyta te same dane, co zapytanie z zadania 2., posBu| si w tym celu adresem rekordu (rowid), odczytanym w zadaniu 2. Nastpnie wyja[nij plan tego zapytania. Jaka metoda dostpu do danych zostaBa u|yta? 4. WyBcz dyrektyw AUTOTRACE. Sprawdz w sBowniku bazy danych, jakie indeksy zaBo|ono na relacji PRAC. 5. Utwórz indeks typu B-drzewo o nazwie PRAC_IDX na atrybucie ID_PRAC relacji PRAC. Nastpnie ponownie wyja[nij plan zapytania z punktu 2. Czym ró|ni si otrzymany plan? 6. UsuD indeks PRAC_IDX. Nastpnie na atrybucie ID_PRAC relacji PRAC zdefiniuj klucz podstawowy o nazwie PRAC_PK. 7. Ponownie sprawdz w sBowniku bazy danych indeksy dla relacji PRAC. Wy[wietl dodatkowo nazwy poindeksowanych atrybutów. Co zauwa|yBe[/a[? 8. Ponownie wyja[nij plan zapytania z punktu 2. Czym ró|ni si otrzymany plan? 9. Utwórz indeks typu B-drzewo o nazwie PRAC_NAZWISKO_IDX na atrybucie NAZWISKO relacji PRAC. Nastpnie wykonaj poni|sze zapytania, dla ka|dego wyja[niajc jego plan. select * from prac where nazwisko = 'Prac155'; select * from prac where nazwisko like 'Prac155%'; select * from prac where nazwisko like '%Prac155%'; select * from prac where nazwisko like 'Prac155%' or nazwisko like 'Prac255%'; Dlaczego w przedostatnim zapytaniu optymalizator nie u|yB indeksu? Jak wyglda posta planu dla ostatniego zapytania? 10. UsuD indeks PRAC_NAZWISKO_IDX i na jego miejsce utwórz skonkatenowany indeks typu B-drzewo o nazwie PRAC_NAZW_PLACA_IDX na atrybutach NAZWISKO i PLACA relacji PRAC. Nastpnie wykonaj poni|sze zapytania, dla ka|dego wyja[niajc jego plan. select count(*) from prac where nazwisko like 'Prac1%'; select count(*) from prac where nazwisko like 'Prac1%' and placa > 100; select count(*) from prac where placa > 100; Co zaobserwowaBe[/a[? 11. Utwórz indeks typu B-drzewo o nazwie PRAC_PLEC_IDX na atrybucie PLEC relacji PRAC. Nastpnie wykonaj poni|sze zapytanie. select count(*) from prac where plec='M' and id_prac between 100 and 110; Czy optymalizator u|yB utworzonego indeksu? 12. WyBcz dyrektyw AUTOTRACE. Nastpnie sprawdz, czy dla relacji PRAC zebrano statystyki. Skorzystaj z poni|szych zapytaD. select table_name, last_analyzed, num_rows from user_tables where table_name='PRAC'; select column_name, num_distinct, low_value, high_value num_buckets from user_tab_columns where table_name = 'PRAC'; select index_name, last_analyzed, num_rows from user_indexes where table_name='PRAC'; select * from user_tab_histograms where table_name='PRAC'; 13. Zbierz statystyki dla relacji PRAC, dla jej wszystkich indeksów oraz poindeksowanych kolumn. Nastpnie ponownie wykonaj zapytania z zadania 12. 14. Wykonaj poni|sze zapytanie. Co zauwa|yBe[/a[? Czy przy odpowiedzi na poni|sze zapytanie optymalizator korzysta z relacji PRAC? select count(*) from prac; 15. Utwórz indeks typu B-drzewo o nazwie PRAC_CZY_ETAT_IDX na atrybucie CZY_ETAT relacji PRAC. Zbierz statystyki dla tego indeksu. Nastpnie wykonaj poni|sze zapytanie i zanalizuj jego plan. select count(*) from prac where czy_etat='T' and plec='K'; 16. UsuD indeksy na atrybutach PLEC i CZY_ETAT, wykonaj ponownie zapytanie z zadania 15. Czy widzisz ró|nice w obu planach? 17. Utwórz indeksy bitmapowe na relacji PRAC, na atrybutach PLEC i CZY_ETAT, o nazwach odpowiednio PRAC_PLEC_BMP_IDX i PRAC_CZY_ETAT_BMP_IDX. Zbierz statystyki dla obu indeksów. 18. Wykonaj poni|sze zapytanie: select count(*) from prac where czy_etat='T' and plec='K'; Co zauwa|yBe[/a[? Czy przy odpowiedzi na zapytanie u|yto relacji PRAC? 19. Utwórz indeks typu B-drzewo o nazwie PRAC_PLACA_IDX na atrybucie PLACA relacji PRAC. Zbierz statystyki dla tego indeksu. 20. Sprawdz plany nastpujcych zapytaD: select * from prac where placa < 1; select * from prac where ROUND(placa) < 1; Dlaczego drugie zapytanie nie korzysta z indeksu na pBacy? 21. Utwórz indeks funkcyjny o nazwie PRAC_PLACA_FUN_IDX na relacji PRAC, który bdzie u|ywany przy zapytaniu o zaokrglon warto[ pBacy pracownika. Wykonaj ponownie zadanie 20. Jakie ró|nice zaobserwowaBe[/a[?

Wyszukiwarka

Podobne podstrony:
19OptymalizacjaSQL czesc 1 zadania
19OptymalizacjaSQL czesc 2
Stechiometria część D zadania
Wyrażenia algebraiczne część 2 zadania
19OptymalizacjaSQL czesc 3
zadania VB czesc 1

więcej podobnych podstron