| Author |
Message
|
lukzak2298 Poziom 16

Joined: 03 Jan 2005 Posts: 325 Location: Katowice
|
#1
26 Mar 2007 10:56 sortowanie SQL, Delphi, problem z wydajnością |
|
|
|
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
|
|
| Back to top |
|
 |
Google

|
#
26 Mar 2007 10:56 |
|
|
|
|
|
| Back to top |
|
 |
radziow Poziom 13

Joined: 02 Aug 2005 Posts: 116 Location: Kraków
|
#2
27 Mar 2007 08:29 Re: sortowanie SQL, Delphi, problem z wydajnością |
|
|
|
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.
|
|
| Back to top |
|
 |
Google

|
#
27 Mar 2007 08:29 |
|
|
|
|
|
| Back to top |
|
 |
lukzak2298 Poziom 16

Joined: 03 Jan 2005 Posts: 325 Location: Katowice
|
#3
27 Mar 2007 09:08 Re: sortowanie SQL, Delphi, problem z wydajnością |
|
|
|
ułamek sekundy? a o jakich bazach mowa? bo ułamek sekundy to mi się ładuje jak wytnę tą bazę do paru tycięcy wpisów, jak jest pełna (300 000 wpisów) to mieli i mieli...
|
|
| Back to top |
|
 |
Google

|
#
27 Mar 2007 09:08 |
|
|
|
|
|
| Back to top |
|
 |
radziow Poziom 13

Joined: 02 Aug 2005 Posts: 116 Location: Kraków
|
#4
27 Mar 2007 10:49 Re: sortowanie SQL, Delphi, problem z wydajnością |
|
|
|
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
|
|
| Back to top |
|
 |
lukzak2298 Poziom 16

Joined: 03 Jan 2005 Posts: 325 Location: Katowice
|
#5
27 Mar 2007 10:54 Re: sortowanie SQL, Delphi, problem z wydajnością |
|
|
|
No właśnie cały problem polega na tym że koleś chce żeby mu te dane się wyświetlały w gridzie, masz racje... przynajmniej na starcie mogę mu to załadować z normalnie i szybko...
|
|
| Back to top |
|
 |
Google

|
#
27 Mar 2007 10:54 |
|
|
|
|
|
| Back to top |
|
 |
radziow Poziom 13

Joined: 02 Aug 2005 Posts: 116 Location: Kraków
|
#6
27 Mar 2007 11:55 Re: sortowanie SQL, Delphi, problem z wydajnością |
|
|
|
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
|
|
| Back to top |
|
 |