![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 5 Dołączył: 23.10.2006 Skąd: Gda?sk Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Od paru godzin optymalizuje zapytanie do dwoch tabel, w jednej (t1) jest okolo 120000 rekordow w drugiej (t2) ok 2400000. t1 jest w relacji jeden do wielu z t2, na jeden wiersz z t1 przypada okolo 30, 40 rekordow w t2. Pytanie czy troche ponad 4s to szczyt mozliwosci mysql-a w takich przypadkach?? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
odpowiem troche po czasie bo wlasnie sam natrafilem na podobny problem.
Zakladam ze uzywasz silnika InnoDb, jesli nie to mozesz od razu czytac koniec (IMG:style_emoticons/default/winksmiley.jpg) zrob dodatkowa tabele na silniku MyIsam ktora bedzie miala aktualizowane dane tekstowe(te na ktorych wykonujesz zapytanie like), oraz primary identyfikator. Dane mozesz aktualizowac triggerami lub w dowolnie wybrany sposob np. procedura skladowana odpalana w cronie (zalezy od konkretnej sytuacji co ma najwiecej sensu, najmniej obciaza baze, czy wyszukiwanie ma byc na aktualnych danych itp) na pola tekstowe mozesz wtedy zalozyc indeks Fulltext i wtedy... http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html (IMG:style_emoticons/default/smile.gif) edit: Jesli chodzi o proby optymalizacji poprzez zamiane where t1.id = t2.id na rozne join to tutaj akurat taki warunek jest rownoznaczny z inner join(wtedy niewazne czy left czy right), a szybszego joina nie ma niezaleznie od tego jak go w sql zapiszemy (IMG:style_emoticons/default/smile.gif) edit2: moje zapytanie wykonywalo sie srednio ~5sec w tym momencie nie przekracza 0.01s Ten post edytował yevaud 22.10.2009, 13:39:05 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 15:50 |