[ Pobierz całość w formacie PDF ]
.Aby zrozumieć, jak działa optymalizacja kwerend, musisz poznać sposób, w jaki obchodzi się z nimi Jet.Każda kwerendaprzechodzi cztery etapy:66.Definicja przy użyciu jednego z kilku narzędzi tworzona jest instrukcja SQL.67.Kompilacja ciąg SQL jest dzielony na części.68.Optymalizacja używając działającego w oparciu o koszt algorytmu, Jet tworzy i testuje różne sposobyotrzymania żądanego zestawu wyników.69.Wykonanie używając optymalnego planu, Jet dostarcza użytkownikowi zestaw wyników.Kwerendę możesz definiować poprzez siatkę QBE, ciąg SQL wykonywany w kodzie, ciąg SQL we właściwości yródłowierszy formularza, raportu lub formantu lub w każdy inny sposób, który powoduje powstanie ciągu SQL.Jet umieszcza części ciągu w hierarchicznej, wewnętrznej strukturze.Części te przypominają słowa kluczowe instrukcjiSQL.Tabela podstawowa użyta przez kwerendę (From) stanowi podstawę.Następnie ustawiane są kolumny zestawuwyników (Select).Pózniej ustawiane są kryteria i ograniczenia (Where), które musi spełnić kwerenda.Kolejnym ele-mentem są informacje o relacjach tabeli podstawowej (Join).Ostatnia część to informacja o sposobie sortowania zestawuwyników (Order by).Struktura ta charakterystyczna jest dla fazy optymalizacji.251Rozdział 14.f& Optymalizacja aplikacjiOptymalizacja to najbardziej złożony etap.Jet wycenia i oblicza koszt każdego z możliwych rozwiązań.Dokonuje tego nadwa sposoby: uzyskując dostęp do tabel bazowych i sprawdzając istniejące między nimi sprzężenia.Zrozumienie sposobu,w jaki Jet postrzega kwerendy, może pomóc Ci w projektowaniu szybszych kwerend w przyszłości.Jet pobiera wiersze z tabel na trzy sposoby:u Skanowanie jest to najdroższe rozwiązanie.Jet przeszukuje każdy wiersz bez użycia indeksu.Kwerenda wymusina aparacie Jet skanowanie tabeli jeśli:Jej ograniczenie dotyczy nieindeksowanego pola.Duża część wierszy tabeli spełnia kryteria kwerendy.u Indeksowanie Jet używa do przeszukiwania wierszy tabeli jej indeksu.Mimo, iż może się zdarzyć, że Jet będzieodczytywał stronę z danymi więcej niż raz, rozwiązanie to jest dużo szybsze niż skanowanie.u Optymalizacja Rushmore opcja ta dostępna jest tylko w sytuacji, w której ustanowione w kwerendzieograniczenia dotyczą więcej niż jednego indeksu.Rushmore umożliwia silnikowi Jet znaczne zmniejszenie (wniektórych przypadkach nawet do zera) ilości odczytywanych stron z danymi.Dzięki użyciu optymalizacjiRushmore Jet odczytuje jedynie indeksowane strony, co jest rozwiązaniem niezwykle wydajnym.Oczywistym jest, że jeśli to tylko możliwe, powinieneś unikać skanowania i jak najlepiej wykorzystywać indeksy.Ale jaksprawdzić, czy najlepsze z rozwiązań optymalizacja Rushmore będzie działać na danej kwerendzie? Nie ma sposobu nawłączenie lub wyłączenie technologii Rushmore, nie istnieją również żadne opisujące ją wskazniki.Jest ona zawsze włączona,lecz tylko niektóre z rodzajów kwerend mogą z niej korzystać.Aby kwerenda wykorzystywała optymalizację Rushmoremuszą być spełnione trzy warunki:u Kwerenda musi posiadać kilka indeksów.u Kryteria kwerendy muszą dotyczyć pól z indeksami.u Instrukcje kryteriów muszą używać tych indeksów na jeden z trzech sposobów:u Część wspólna wyrażenie kryterium z operatorem AND.Jet mógłby w tym przypadku skorzystać zoptymalizacji Rushmore, gdyż oba te pola są indeksowane.WHERE NazwaFirmy='Ernst Handle' And Miasto='Graz'u Połączenie wyrażenie kryterium z operatorem OR.Jet mógłby w tym przypadku skorzystać z optymalizacjiRushmore, gdyż oba te pola są indeksowane.WHERE NazwaFirmy='Ernst Handle' Or Miasto='Graz'u Zliczanie podlicza kwerendę, zwracając jedynie liczbę rekordów.Rushmore zoptymalizuje tę kwerendęnawet przy braku ograniczeń w warunku Where.SELECT Count(*) FROM Klienci;Upewnij się, że we wszystkich tabelach, które mogą z tego skorzystać, umieściłeś indeksy.Spróbuj również takkonstruować kwerendy, by można było uzyskiwać części wspólne i połączenia tych indeksów.Wykorzystanie tych dwóchwskazówek powinno załatwić sprawę operacji tabel podstawowych w planie wykonywania kwerendy.Gdy Jet wybrał już sposób dostępu do danych w pojedynczych tabelach, musi sprawdzić, jakie między tabelami występująrelacje.Tę fazę optymalizacji można by nazwać określaniem strategii sprzężenia.W przewidywaniu strategii sprzężeniaplanu wykonywania pomoże Ci znajdująca się w tabeli 14.2 charakterystyka typów strategii.Tabela 14.2.Typy złączeń: jak działają i jak je rozpoznaćTyp sprzężenia Sposób działania Cechy charakterystyczne UżycieIndeks-Połączenie Większość pracy Indeksy użyte są po obu Gdy tylko to możliwewykonują indeksy stronach relacji.Co najmniejjeden z indeksów niedopuszcza wartości null(klucz podstawowy).Wszystkie tabele muszą byćw rodzimym formacieaparatu JetTabela 14.2.Typy złączeń: jak działają i jak je rozpoznaćTyp sprzężenia Sposób działania Cechy charakterystyczne Użycie252Część IV f& Tajniki VBAIndeks Pierwsza tabela jest Indeks użyty jest w polu Jeśli w drugiej tabeli jestskanowana, (polach) relacji drugiej tabeli.niewiele rekordów, jeśli jeja następnie, przy W indeksach tych możliwe są rekordy nie są wyświetlaneużyciu indeksów, wartości null.Ograniczenia nie w zestawie wyników lubodnajdywane są używają indeksów jeśli ograniczeniewiersze w drugiej w kryterium pierwszej tabelitabeli jest bardzo wąskiePołączenie Obie tabele Dwie tabele sortowane według Obie tabele są dużeskanowane są sprzężonych pól
[ Pobierz całość w formacie PDF ]