[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Efektywność dostępu do zapisów - cd
Radziłbym zdecydowanie pozostać przy eleganckim
rozwiązaniu
"relacyjnym".
Z tym dostępem do danych
for each B of A where ...
nie powinno być problemu, gdyż klucz główny w
tabeli B
składa się z 2 kluczy obcych: klucza głównego z
tab. A
oraz klucza głównego z tab. C. Jeżeli ilość
wierszy w
tabeli B odpowiadających jednej konkretnej paczce
z tabeli A stanowi niewielki procent wszystkich
wierszy
z tabeli B (a zakładam, że raczej tak jest), to
zostaną one
błyskawicznie odfiltrowane dzięki indeksowi
stanowiącemu
klucz główny w tab. B. Warunek WHERE będzie więc
sprawdzany
na stosunkowo niedużej ilości odfiltrowanych
wcześniej wierszy.
Obecność w kluczu głównym tabeli B klucza obcego z
tab. C
na drugiej pozycji sprzyja selekcji poleceniem
WHERE wg
klucza tabeli C. Mam doświadczenia z podobnym
rozwiązaniem,
gdzie odpowiednik tabeli B zawiera ok 1 mln
wierszy i nie ma
z tym żadnych kłopotów.
Drugi sposób przeszukiwania
find first B of C ...
może sprawiać więcej problemów z wydajnością.
Dzięki
obecności indeksu złożonego tylko z klucza obcego
tab. C PROGRESS również odfiltruje wszystkie
wiersze
tab. B konkretnego rodzaju wartości C używając
tego
własnie indeksu, ale tych wierszy będzie zapewnie
znacznie więcej. Pytanie, jak sobie z tym poradzi
find first ? Jeżeli nie będzie żadnych dodatkowych
warunków filtrowania (WHERE), to przypuszczam że
bezproblemowo.
Na koniec jeszcze podzielę się uwagą
"filozoficzną",
dlaczego nie warto, moim zdaniem, brnąć w
rozwiązanie
"nierelacyjne". Nawet gdyby ze względów
wydajnościowych
rozwiązanie "relacyjne" okazałoby się na dzień
dzisiejszy
gorsze, to wydajność komputerów i systemów
bazodanowych
(w tym też PROGRESS-a) dość szybko rośnie. Może
się okazać,
że dzięki temu za kilkanaście miesięcy wydajność
tego
rozwiązania będzie wystarczająca i wybór trudnego
w utrzymaniu
rozwiązania nierelacyjnego stanowić będzie jedynie
źródło kłopotów.
Pozdrawiam
-
Bogdan Brzozowski
Kier. Działu Oprogramowania
Z.U.I. NOVUM Sp. z o.o.
Spokojna 9A
18-400 Łomża
POLAND
e-mail: bogdan@novum.pl
------
Strona WWW: http://pluton.pol.lublin.pl/pugpl/index.htm
Obsluga listy: listserv@zeto.bydgoszcz.pl
Archiwum listy: http://www.zeto.bydgoszcz.pl/progress/index.html
------