[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
------