Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
Mam prostą tabelę INNODB. `aid` INT `time` INT `date` DATE W której przechowuje informacje o wizytach. Chciałbym pobrać liczbę wyświetleń z ostatnich X godzin np. z ostatnich 60 minut. Niestety zapytanie jest za ciężkie i zawiesza mi serwer (wykonywane jest dość często). Rekordów jest kilka milionów. W jaką stronę iść? Czy indeksy coś dadzą (nie jestem w stanie tego łatwo testować bo każda zmiana struktury trwa bardzo długo, więc metoda prób i błędów tutaj się nie sprawdza)? Czytałem że inno słabo sobie radzi z COUNT :/ Ten post edytował markonix 18.05.2015, 11:27:15 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%)
|
indeksy zawsze pomagają na polach po których się szuka
dodaj sobie cache, chyba nikomu nie zrobi różnicy jak zobaczy dane sprzed kilkudziesięciu minut |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
Cache czego dokładnie? Użytkownikowi nie sprawi różnicy ale jeżeli reklama ma np. limit godzinowy 100 wyświetleń to musi mieć jednak dostęp do bieżących danych, a nie sprzed godziny.
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 122 Dołączył: 17.07.2005 Skąd: P-na Ostrzeżenie: (0%)
|
jeśli indeksy nie pomogą to zapisz wynik do memcache i odejmuj z memcache dopóki > 0 jak będzie 0 pobierz na nowo
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
Dodanie indeksu na time (na AID jest nałożony klucz obcy) powoduje przeciwny efekt przy COUNT jak i SELECT.
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%)
|
O indexach złożonych (np. dwukolumnowych) słyszał?
|
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 14:48 |