Jet cos tam optymalizuje (wg reklamówek) - o ile nie używasz ODBCDirect.
Jasne, ODBCDirect calkiem obchodzi Jet'a.
Wzmiankę o ODBCDirect dodałem pro forma - aby nikt się nie czepiał ;-)
Jezeli w zapytaniu nie bedziemy mieszac tabel z roznych zrodel,
Jet moglby byc na tyle cwany aby to rozpoznac i przekazac zapytanie
niejako pass through. Tak wiec sterownik ODBC otrzymywalby SQL
zapytania, tlumaczylby je (escapes) i przekazywal dalej. O optymalizacje
martwilby sie silnik (No dobra, tak prosto to nie jest ! W zaleznosci czy
checemy miec updatable recordset, czy tylko snapshot+forward only,
Jet troche manipuluje zapytanie aby otrzymac PK's IDX'es z tabel bioracych
udzal w zapytaniu i ..., ale pominmy to dla prostoty)
ODBC CLI posiada funkcje SQLStatistics, ktora pozwala wyczytac
ilosc rekordow i 'data pages' oraz indeksy danej tabeli. Takoz
PKeys i FKeys daza sie wyczatac. Tak wiec optimizer moglby kozystac
z tych informacji. Czy to robi ???
Pytanie pominę milczeniem. Nie znam się.
Dodam jedną drobną uwagę - jak długo pracuję na tabelach połączonych używam
żargonu Jet
(łącznie z funkcjami użytkownika itd.)
Dla ODBCDirect muszę użyć żargonu serwera (oczywiście nie nazywam tego wadą)
Coś niecoś można znaleźć w "Building Applications With MS Access 97" w
jednym z końcowych rozdziałów tyczących sieci.
Wlasnie zauwazylem, ze pozycja ta nie jest juz wiecej dostepna
online (wbrew temu co pisze gdzies www.microsoft.com/officedev/...) :-(
Jest jest:
http://www.microsoft.com/Accessdev/articles/bapp97/toc.htm
stąd możesz ściągnąć offline, rozdział po rozdziale:
http://www.microsoft.com/Accessdev/articles/bapp97/Bapp97.htm
albo jeszcze online:
http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?co...
=28000550
i w drzewku:
Office Solutions Development
microsoft Office
microsoft Office 97
Product Documentation
Access
Building Applications ...
Gdzieś tam lezy też wersja dla A'2000 (bez specjalnych zmian, choć trochę o
ADO tam jest)
"Building Applications With Forms And Reports")
Ale jak to na stronach MS bywa- nie mogę teraz znaleźć ;-)
Co, jezeli tabela jest podwiazana nie przez ODBC (brak SQLStatistics)
tylko przez ISAM (DBase, FoxPro, Paradox, ...). Czy tam tez jest
mozliwosc odczatania statystyk ? O indexy access pyta przy podwiazywaniu
takich tabel. Moze optymalizuje bez znajomosci ilosci rekordow ?
Wiesz - swego czasu linkowałem tabele dBase wraz ze wskazaniem pliku
indeksów i jakoś nie zauważyłem istotnego przyspieszenia w wyszukiwaniu.
Może też nie o szybkość ale integralność chodziło ?
Jak widać z przykładu podanego przez Piotra - z tą optymalizacją różnie
bywa.
Możesz przecie zapytać: dlaczego Jet nie optymalizuje sobie kolejności
wyszukiwania ?
Moze czasami nie potrafi ?
Ostatnio robiłem jakąś kwerendę na kwerendach, z warunkami typu EXISTS.
Coś tam dodałem - jeden niewinny warunek - i kwerenda wykonywała się w
nieskończoność
(brzmi to trochę gołosłownie - ale nie mogę sobie przypomniec sedna)
Zrezygnowałem z tego dodatkowego warunku na rzecz jakiegoś podobnego
rozwiązania - nie w kwerendzie ale docelowym raporcie (nie chodzi o running
sum ;-) - i poszło !
Od czasu lektury J.Celko stosuję też jego wskazówki w optymalizowaniu (choć
tyczą ORACLE i nie musza dotyczyć Rushmore), jak np. optymalizowanie
warunków pod kątem przyrównania do indeksu, np:
WHERE
pole1 = pole4 - pole3 + pole2
zamiast
WHERE
pole1 - pole2 = pole4 - pole3
aby wykorzystać przynajmniej indeks pola "pole1"
(nadal nasłuchuje z zainteresowaniem ...)
© 2009 Najlepszy miesiąc kawalerski w Polsce !!! - Ceske - Sjezdovky .cz. Design downloaded from free website templates