Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy na prawdę nie da się tego zoptymalizować
Forum PHP.pl > Forum > Bazy danych > MySQL
kaszanka
Hi,

Posiadam sobie bazę danych która składa się z jednej tabeli o nazwie query i pól: ID, query, q, ilosc, kol
Przykład zawartości:
Cytat
ID, query, q, ilosc, kol
7 alumilut alumilut 1 13366

Index: PRIMARY ID

Rekordów w bazie 65 783

Zapytanie:
Cytat
SELECT * FROM query ORDER BY kol DESC LIMIT 10;
czyli losowanie 10 przykładowych wpisów z kolumny query.

Problem mam z wynikiem takowego zapytania otóż:
Cytat
# Query_time: 3 Lock_time: 0 Rows_sent: 10 Rows_examined: 65783
Czyli wczytano nadmiarowo wszystkie istniejące rekordy w bazie gdzie potrzebnych jest tylko 10 losowych.

Próbowałem tworzyć na różne sposób indexy ale nic to nie pomagało.
Czy na prawdę nie da się zmniejszyć tych nadmiarowo wczytywanych rekordów?
cornholio666
Zobacz może to pomoże, choć nie jestem pewien
  1. SELECT * FROM query ORDER BY RAND() LIMIT 10
dr_bonzo
Cytat
# Query_time: 3 Lock_time: 0 Rows_sent: 10 Rows_examined: 65783
Czyli wczytano nadmiarowo wszystkie istniejące rekordy w bazie gdzie potrzebnych jest tylko 10 losowych.


Rozpatrzono, przeanalizowano wszystki, a wyslano tylko 10 (przeciez wyraznie pisze (jest napisane)).

Po drugie przeciez sortujesz cala tabele, a zeby ja posortowac musisz znac wartosci 'kol' wszystkich rekordow.
kaszanka
hmm

W sumie teraz dodałem index dla query oraz kol i Rows_examined zmalała z tych 65tysięcy do 10 blink.gif
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.