• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Długi czas pracy z bazą danych

0 głosów
262 wizyt
pytanie zadane 5 września 2016 w Java przez kaminki Obywatel (1,030 p.)
Mam w bazie danych dwie tabele. W jednej jest słownik (ang - pol) a w drugiej importowana lista ze słowami do tłumaczenia (tylko nazwa angielska z pusta kolumną pol). W programie na początku wysyłam zapytanie aby sprawdziło czy w słowniku istnieje słowo i jeżeli tak to ma je wpisać do pustego pola w drugiej tabeli. I tak dla każdego słowa. A jest ich około 11000. Później wyświetlam je w TableView (JavaFx). I tu już jest problem bo to trwa zbyt długo. Ta operacja zajmuje około 15s czasu. A dalej jest jeszcze gorzej. Komórki mam edytowalne i gdy wpisze tłumaczenie to wysyła je do słownika, i później powtarza krok jak wcześniej czyli sprawdza czy jest w słowniku i jeśli jest to wpisuje tłumaczenie i później wyświetla. I za każdym razem gdy wpiszę to powtarza krok. I to zajmuje tez około 15s. Jest jakiś inny sposób aby to działało szybciej? Może wielowątkowość a jeśli tak to ile to przyśpieszy i jak do tego podejść?

2 odpowiedzi

+2 głosów
odpowiedź 5 września 2016 przez manjaro Nałogowiec (37,420 p.)
Może trochę z innej strony? Po co wyświetlać naraz 11000 rekordów? Przecież nikt nie będzie pracował jednocześnie na takiej ilości danych? Nie można zastosować jakiegoś filtra? Albo wyświetlić na przykład 100 pierwszych rekordów spełniających warunek?
+1 głos
odpowiedź 5 września 2016 przez Thomas Frost Bywalec (2,540 p.)
Cześć,

 

Po pierwsze musisz posortować rekordy alfa-numerycznie (w tym wypadku wystarczy alfabetycznie), a następnie korzystając z "binary search" możesz wyszukiwać odpowiednie komórki z szybkością log(n), gdzie n jest ilością rekordów (dla obecnej ilości to koło 13 kroków).
​Jeśli chodzi o wyświetlanie całej tabeli - to bardzo zły pomysł, używaj małych porcji (np. 50 wierszy). Tego już nie da się przyspieszyć, jedynie wybieranie i edytowanie (ponieważ aby edytować trzeba wyszukać/wybrać).

​Pozdrawiam,
Tomek

Podobne pytania

0 głosów
1 odpowiedź 705 wizyt
0 głosów
1 odpowiedź 179 wizyt
pytanie zadane 6 września 2016 w Java przez kaminki Obywatel (1,030 p.)
0 głosów
2 odpowiedzi 402 wizyt

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,323 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...