logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak przyspieszyć sortowanie dużej bazy DBF w Delphi z TQuery?

lukzak2298 26 Mar 2007 10:56 1885 5
REKLAMA
  • #1 3720153
    lukzak2298
    Poziom 18  
    Posty: 667
    Pomógł: 5
    Ocena: 90
    Mam pewną bazę danych, ma ona ~0,5GB (DBF). Kiedy chce posortować całą (czytaj jakąś dużą odfiltrowaną część - nie wiem po co, ale tak ma być - więc tak jakby całą, no dobra nie istotne...) To strasznie długo mi to mieli zanim posortuje. używam podstawowych komponentów w delphi np TQuery itd...

    Czy jest jakaś sztuczka magiczka na przyspieszenie sortowania tego?

    Myślałem nad zmianą miejsca pliku tymczasowego, ale w kompie na którym to bedzie używane jest tylko 1 hdd, ramu jest też tylko 0,5 GB...

    Może ja mam złe odejście do tego?

    Wszelkie wskazówki mile widziane
  • REKLAMA
  • #2 3723155
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    Sztuczek to nie ma za bardzo ale podstawowe zasady są.

    Pliki dbf mają indexy cdx, ntx lub mdx (Borland obsługuje chyba tylko mdx jak się nie myle)jeśli masz index na polu który chesz posortować albo pole występuje w innym indexie jako pierwsze to posortowanie trwa ułamek sekundy. Najlepiej do tego celu wykorzystać TTable i ustawić index później odczyt to już prosta sprawa.
    Index Na sortowanym polu to naprawdę znakomity sposób.
  • REKLAMA
  • REKLAMA
  • #4 3723439
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    No jeśli używam indexów to otwarcie tabeli i odczyt trwa ułamek sekundy. TQuery to już inna bajka i do prostych odczytów nie stosuje wole indexy.

    PS.
    oczywiście jak podłączysz to do jakiegoś grida to to jeszcze dłużej trwa. Moja tabeleczka 600 MB ma 8109599 rekordów 8 milonów 110 tysięcy
  • REKLAMA
  • #6 3723586
    radziow
    Poziom 16  
    Posty: 132
    Pomógł: 22
    Ocena: 9
    Reasumując:
    1. Zrób index na sortowanym polu
    2. Przejdź z Query na tabelke
    3. Wykorzystaj inne komponenty do przeglądania danych.

    Jeśli chodzi o pierwsze 2 to konieczność :) a ten 3 to nie jestem pewien ale wydaje mi się że DBGrid jak jest podłączona tabela nie zasysa wszysztkich rekordów (pasek przewijania zawsze na środku). Co prawda ja już nie korzystam z dbGrida - bo jest rewelacyjny TcxGrid z pakietu QuantumGrid Firmy DeveloperExpress, ale wydaje mi się że to powinno pomóc
REKLAMA