Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Optymalizacja zapytania - duża baza
Forum PHP.pl > Forum > Bazy danych > MySQL
owen
Witam,

Od pewnego czasu zaczynam mieć problem z zapytaniem, które do tej pory chodziło wydajnie ale wraz rosnącą liczbą rekordów w bazie strasznie spowolniło.

Mam tabele 'dane', która aktualnie posiada coś około 24 mln rekordów z danymi analitycznymi zebranymi ze stron naszych klientów.

Struktura tabeli wygląda następująco:
  1.  
  2. pole | typ
  3.  
  4. 1. stamp | date PK
  5. 2. website_id | bigint(20) PK
  6. 3. concept_id | bigint(20) PK
  7. 4. validation_id | bigint(20) PK
  8. 5. url | varchar(500) PK
  9. 6. positive | bigint(20)
  10. 7. negative | bigint(20)
  11.  


Dodatkowo na tabele nałożone są 4 indeksy + PRIMARY. Zapytanie, które chcę wykonać służy do pobrania danych analitycznych z pól positive i negative gdzie website_id = ? oraz z zakresu 7 dni. Zapytanie wygląda tak:

  1. SELECT
  2. DATE(stamp) AS x, SUM(positive) AS positive, SUM(negative) AS negative
  3. FROM DATA FORCE INDEX(website_getAllCurrent)
  4. WHERE website_id = ?
  5. AND stamp BETWEEN ?
  6. AND ?
  7. GROUP BY stamp


Jak widać używam FORCE INDEX website_getAllCurrent, który nałożony jest na pola: website_id, stamp, positive, negative.

Przykłądowe zapytanie bez FORCE INDEX:
  1. SELECT
  2. DATE(stamp) AS x, SUM(positive) AS positive, SUM(negative) AS negative
  3. FROM DATA
  4. WHERE website_id = 1
  5. AND stamp BETWEEN '2014-05-06'
  6. AND '2014-05-13'
  7. GROUP BY x


Explain takiego zapytania:

  1. '1', 'SIMPLE', 'data', 'range', 'PRIMARY,website_id,website_getAllCurrent', 'website_getAllCurrent', '11', NULL, '506142', 'Using where; Using index'


Czas wykonania: 67 sekund

Prosiłbym o pomoc jak można by było przyspieszyć takie zapytanie.
Pyton_000
Mysql Partycjonowanie po dacie np. rok+mc porawi znacznie wydajność.
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.