![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 4 Dołączył: 9.06.2007 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Witam,
W bazie mam ok 1,3mln rekordów, jest dosyć dużo zapytań, acz nie trwają one długo bo ok 4s każde. Niestety suma sumarum, zapytania te przeciążają bazę mojego hostingodawcy - i często strona jest niedostępna. A że głównie to się dzieje przy odwiedzających botach... tabele są dwie, ale zapytanie o które mi się rozchodzi nawiązuje tylko do jednej:
Przykładowe zapytanie wygląda tak:
Jeśli wstawię zamiast * kolumny które mnie interesują (w sumie wszystkie) - nie ma różnicy. Różnica jest gdy usunę "order by", ale przy usunięciu pr, jest to ok 1s, jednak jest to rozwiązanie nie do końca satysfakcjonujące, bo tracę całość sortowania, przenieść sortowanie do PHP? Owszem, ale wyciąganie >200MB danych z bazy do php i tam obrabianie, nie będzie szybsze. Nawet wyciągnięcie samych tych dwóch kolumn nie usprawni tego, bo później trzeba dociągnąć pozostałe dane. Proszę o wszystkie sugestie. Ten post edytował grzemach 10.03.2011, 23:36:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Po założeniu indeksu (jednego!) na dwie kolumny: created i pr oraz pobieraniu samego id EXPLAIN zaczyna wyglądać obiecująco:
Kod id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE PageRankHosts index NULL created_pr 6 NULL 1 "Using index" jednak sprawdzam to na pustej bazie, bo nie chce mi się generować miliona wierszy. W każdym bądź razie załóż ten indeks i sprawdź czy takie zapytanie będzie szybsze:
Ten post edytował Noidea 14.03.2011, 14:10:01 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 18:47 |