[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Optymalizacja
> Mam maly problem z optymalizacją wyszukiwania danych.
>
> W tabeli mamy pola:
> zakład pracy,
> nazwisko,
> imię,
> wydział
>
> Użytkownik obsługuje jeden zakład ale kilka (od jednego do kilku)
> wydziałów
>
> Jak ustawić indeksy aby miał szybki dostęp do pracowników z obsługiwanych
> przez siebie wydziałów w kolejności alfabetycznej.
>
> Ustawienie indeksu na
> zakład,
> nazwisko,
> imię,
> wydział
>
> oraz wykonywanie pętli
> FOR EACH prac WHERE zaklad = vZaklad
> AND CAN-DO('w1,w2,w10',uzyt.wydz)
> NO-LOCK:
>
> END.
>
> nie daje zadawalających wyników. Czy można coś z tym zrobić.
Cos mi sie wydaje, ze problem tkwi gdzie indziej. Moze brakuje USE-INDEX w FOR
EACH, albo jest, ale wskazuje na zly indeks?
Ilu moze byc pracownikow w jednym wydziale? 10 tysiecy? 20 tysiecy?
Sekwencyjne przejrzenie 20 tysiecy rekordow na byle PCcie trwa 4-5 sekund, a
przeciez zwykle nie potrzebujemy wszystkich rekordow na raz. Co to jest ten
niezadawalajacy wynik? Odpowiedz po 2 sekundach? 2 minutach?
Jesli pracownikow jednego zakladu jest 100 tysiecy, wydzialow 100, a zwykle
przeglada sie pracownikow 2-3 wydzialow to sugeruje uzycie temp table:
def temp-table tt_prac
field nazwisko as char
field imie as char
field prac_recid as recid
index nazwisko imie.
def var vListaWydzialow as char.
def var i as int.
def var vZaklad as char.
do i = 1 to num-entries( vListaWydzialow ):
for each prac where prac.zaklad = vZaklad and
prac.wydzial = entry( i, vListaWydzialow
) no-lock:
create tt_prac.
assign
tt_prac.nazwisko = prac.nazwisko
tt_prac.imie = prac.imie
tt_prac.prac_recid = recid( prac ).
end.
end.
for each tt_prac:
......
end.
Oczywiscie w tabeli prac musi byc indeks rozpoczynajacy sie od zaklad,
wydzial.
Pozdrawiam!
Tomasz Judycki
Textus Virtualis Sp. z o.o.
Szaserów 3
04-293 Warszawa
tel/fax (48 22) 879 82 00
http://www.tv.com.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
------