=?ISO-8859-2?Q?wydajno=B6=E6_sqlite?=
=?ISO-8859-2?Q?=22Przemys=B3aw_C=2E=22?= - 27-05-2006 00:40
=?ISO-8859-2?Q?wydajno=B6=E6_sqlite?=
Witam, Piszę małą bazę danych w javie. W sumie dwie tabele i używam do tego sqlite i JDBC. mam listę z kategoriami i po kliknięciu wczytuję towary na jtable. Wszytsko chodzi pięknie. Rekordy szybko się wczytują. i tu pojawia się jedno ale.... mam jtextfield i po wpisaniu jakiegos kodu w tym polu maja się wyświetlić tylko kategorie znalezionych towarów. I faktycznie to działa ale wolno. Aktualnie w bazie mam cos koło 22000 rekordów i wyszukanie trwa jakies 8-10 sekund a na konsoli przez sqlite.exe to samo zapytanie wyświetla rekordy dużo szybciej. Hmm czy to jest spowodowane mechanizmem JDBC? jak można to przyśpieszyć? Trochę kodu jakiego używam...
class BazaDanych { ... private static Connection db; private static Statement st; ... /* chyba kluczowe query */ public ResultSet query(String sql) { return st.executeQuery(sql); } }
odczyt rekordow robie tak Bazadanych db = new BazaDanych();
/* szuakj jest szuaknym ciagiem znakow z JTextField */
sql = "select distinct id_kategora, kategoria from kategoria join towar on towar.id_kategoria=kategoria.id_kategoria where towar like '%" + szukaj + "%' order by kategoria";
ResultSet rs = db.query(sql); /* tutaj się przycina */
while( rs.next() ) { /* wyswietlanie rekordow */ /* tutaj tworze tez obiekty kalsy Kategoria */ }
Wiem że napewno nie jest to spowodowane tworzeniem rekordów klasy Kategoria bo program "przycina się" we wskazanym w miejscu. Moze to wina zapytania jest? Pozdrawiam
-- Przemysław C. pc83_at_NoSpAmErS_tlen.pl gg: 7267664 Powered by ArchLinux Gimmick
Krzysztof Wolny - 27-05-2006 00:40
Przemysław C. napisał(a):
> Witam, > Piszę małą bazę danych w javie. W sumie dwie tabele i używam do tego > sqlite i JDBC.
aplikacje bazodanowa jak rozumiem? :)
> mam listę z kategoriami i po kliknięciu wczytuję towary na jtable. > Wszytsko chodzi pięknie. Rekordy szybko się wczytują. i tu pojawia się > jedno ale.... > mam jtextfield i po wpisaniu jakiegos kodu w tym polu maja się > wyświetlić tylko kategorie znalezionych towarów. I faktycznie to działa > ale wolno. Aktualnie w bazie mam cos koło 22000 rekordów i wyszukanie > trwa jakies 8-10 sekund a na konsoli przez sqlite.exe to samo zapytanie > wyświetla rekordy dużo szybciej. Hmm czy to jest spowodowane mechanizmem > JDBC? jak można to przyśpieszyć?
> Wiem że napewno nie jest to spowodowane tworzeniem rekordów klasy > Kategoria bo program "przycina się" we wskazanym w miejscu. > Moze to wina zapytania jest?
co do zapytan to napewno mozesz sprobowac przejs na PreparedStatement, napewno oplaci sie to pod wzgledem bezpieczenstwa.
co do wydajnosci to zainstaluj sobie np. mysqla, wrzuc do neigo tyle samo danych i sprawdz czy chodzi czybciej. jesli tak to wiesz gdzie jest wina.
-- ================================ Krzysztof Wolny
[ http://rtfm.bsdzine.org ][ http://tiny.pl/g776 ]
O: No bo normalnie to każdy czyta z góry na dół... P: Dlaczego ??? O: Pisanie nad cytatem ! P: Co należy do bardziej wkurzających obyczajów niektorych ludzi ?
=?ISO-8859-2?Q?=22Przemys=B3aw_C=2E=22?= - 30-05-2006 04:07
Krzysztof Wolny > napisał(a): > aplikacje bazodanowa jak rozumiem? :) racja aplikacje bazodanową ;-)
> co do wydajnosci to zainstaluj sobie np. mysqla, wrzuc do neigo tyle > samo danych i sprawdz czy chodzi czybciej. jesli tak to wiesz gdzie jest > wina. rzeczywiście winą jest sqlite. stworzyłęm na prędce baze w postgresie i małe zmiany w kodzie i zapytaniach i śmiga szybko wprost w oka mgnieniu ;-) pozdrawiam
Brzezi - 30-05-2006 04:08
pon, 29 maj 2006 o 08:27 GMT, Przemysław C. napisał(a):
>> co do wydajnosci to zainstaluj sobie np. mysqla, wrzuc do neigo tyle >> samo danych i sprawdz czy chodzi czybciej. jesli tak to wiesz gdzie jest >> wina. > rzeczywiście winą jest sqlite. stworzyłęm na prędce baze w postgresie i > małe zmiany w kodzie i zapytaniach i śmiga szybko wprost w oka > mgnieniu ;-)
niekoniecznie baza, problem moga stanowci zle dobrane zapytania, brak lub zle indeksy, ale to w takiej sytuacji to wrozenie z fusow....
Pozdrawiam Brzezi -- [ E-mail: brzezi@enter.net.pl ][ ] [ Ekg: #3781111 ][ Error in operator: add beer ] [ LinuxUser: #249916 ][ ]
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
=?iso-8859-2?q?Co_oznacza_b=B3=B1d_Warning:_mysql=5Fconnect() _[function.mysql-connect]:_Can't_connect_to_local_MySQL_server_through_sock et_'/var/run/mysqld/mysqld.sock'_(2)_in?=
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
[MS SQL 2005] =?windows-1250?Q?Ilo=9C=E6_wiersz=F3w_w_zbiorze_wynikowym?=
=?ISO-8859-2?Q?=AFegnam_si=EA=2E=2E=2E?=
Manager =?ISO-8859-2?Q?font=F3w=2E=2E=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.plsulimczyk.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|