Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: LIMIT z DISTINTC-em tak bardzo obciąża bazę?
Forum PHP.pl > Forum > Bazy danych > MySQL
aladin07
mam tabele w bazie i w niej 5,5mln wpisow i dziwi mnie ze wyszukanie (ponizej szczegoly)
z zastosowaniem limitu jest tak znaczaco dluzsze

  1. SELECT DISTINCT country FROM kolumna

trwa 0,045 sekundy

a wersja
  1. SELECT DISTINCT country FROM kolumna LIMIT 10

trwa juz ponad 15sek.
a to juz kosmos
w sumie index ma sile 19 bo tylko tyle krajow jest w tej kolumnie

czy to normalne jest czy ja mam jakis dziwny problem
erix
A daj explain i pokaż, co zwraca.
aladin07
Query explain select distinct country from kolumna limit 10, Tue Jul 07 09:12:47 2009
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE kolumna index country 138 3179 Using index; Using temporary


Query explain select distinct country from kolumna, Tue Jul 07 09:14:23 2009
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE kolumna range country 138 3179 Using index for group-by
erix
Cytat
1 SIMPLE kolumna index country 138 3179 Using index; Using temporary

Cytat
1 SIMPLE kolumna range country 138 3179 Using index for group-by

Wyciąganie do tabeli tymczasowej zawsze będzie wolniejsze.

A które zapytania "wyjaśniałeś"?
aladin07
no to jest wyjasnienie jednego i drugiego - zalaczylem caly kod

w takim razie jak sie pozbyc tej tymczasowej tabeli?
alegorn
mysle ze to nie kwestia zapytania, ale juz wydajnosci bazy (mysql? ) przy takiej ilosci warto by bylo pomyslec o postgres ?
na dobra sprawe zapytanie ma co przemielic.... wyszukaj unikaty z 5,5mln...

mozna by bylo pomyslec o normalizacji bazy, tak do 3 postaci (min 2), wywal wszystkie atomowe wartosci do zewn tabeli... powinno pomoc..
wtedy do zliczenia krajow wystarczy ci zliczyc rec w jednej tabeli.....


hmmm choc na dobra sprawe, dlaczego po dolozeniu limitu az tak zwiekszyl sie czas przetwazania - nie wiem, sprawdz obciazenie serwera, (SHOW PROCESSLIST)
erix
Cytat
mysle ze to nie kwestia zapytania, ale juz wydajnosci bazy (mysql? ) przy takiej ilosci warto by bylo pomyslec o postgres ?

Z tego, co czytałem, to w kwestii wydajności właśnie przoduje MySQL. tongue.gif

Zdałaby się struktura tabel.
alegorn
Cytat(erix @ 8.07.2009, 12:53:59 ) *
Z tego, co czytałem, to w kwestii wydajności właśnie przoduje MySQL. tongue.gif


mysle ze to tak naprawde kwestia konfiguracji, ale mimo wszystko chyba warto by bylo odswiezyc wiedze biggrin.gif

postgres vs mysql 1
postgres vs mysql 2

wyniki nie sa jednoznaczne w wszystkich zapytaniach - ale tendencja jest chyba odwrotna niz piszesz...

Cytat(erix @ 8.07.2009, 12:53:59 ) *
Zdałaby się struktura tabel.


tutaj zgadzam sie calkowicie :]
erix
Cytat
mysle ze to tak naprawde kwestia konfiguracji, ale mimo wszystko chyba warto by bylo odswiezyc wiedze

A to mnie zaskoczyłeś. [;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.