Delphi + UniDac + Access - wolne wykonywanie zapytania

Delphi + UniDac + Access - wolne wykonywanie zapytania
S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 82
0

Hej, jest jakaś opcja w UniQuery, która ignoruje sortownie z SQL'a tylko sama coś robic.
Mam dziwne zjawisko. Bardzo proste zapytanie

Kopiuj
SELECT TOP 50 ID,name FROM 1_table WHERE ID < X ORDER BY ID DESC

w UniQuery robi się bardzo długo a bezpośrednio w Access szybko.

Tabela ma ok 60k rekordów.

Jakaś rada ?:)

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
0

No bo nie zdajesz sobie chyba sprawy jak działa sortowanie po stronie bazy i po stronie klienta jakim jest aplikacja napisana w delphi przy użyciu UniDac. Zostaw sortowanie po stronie accessa i ustaw w unidac fetchowanie po np 200 rekordów wtedy powinno zwrócić rekordy zaraz po przetworzeniu przez access'a i w miarę skrollowania po gridzie w delphi będzie sobie samo dociągać brakujące dane.

S8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 82
0

Zapytanie:

Kopiuj
SELECT TOP 50 ID,name FROM 1_table ORDER BY ID DESC

robi się szybko w Delphi też/

Przecież TOP 50 powinno być już uwzględnione w zapytaniu
A sortowanie niby czemu domyślnie miałoby być realizowane przez UniDac a nie Accessa ? Ja nie wskazuje w UniQuery, żadnego IndexFieldNames itd. Nie ma czegoś w stylu direct mode?

Nie łącz proszę wątków co do lazy loading. Owszem jest to połączone bo coś sobie testuje ale na totalnie pustym projekcie i ta sytuacja z tym zapytaniem jest dziwna. Robiłem wiele o wiele bardziej skomplikowanych zapytań i nie było takiej sytuacji. Wątek z lazy loading nie jest taki trywialny, że zmienie grida i załatwione. Zrobiłem testy i faktycznie FetchAll=False z UniDataSource i TDBGrid działa fajnie ale aktualny grid to jest duży customowy komponent.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.