Obecnie używam następującego zapytania, które trwa około 8 minut, aby zwrócić wynik ze względu na objętość danych (około 14 miesięcy). czy mogę to przyspieszyć?SQL - przyspieszenie zapytania
Baza w pytaniu MySQL z InnoDB silnik
select
CUSTOMER as CUST,
SUM(IF(PAGE_TYPE = 'C',PAGE_TYPE_COUNT,0)) AS TOTAL_C,
SUM(IF(PAGE_TYPE = 'D',PAGE_TYPE_COUNT,0)) AS TOTAL_D
from
PAGE_HITS
where
EVE_DATE >= '2016-01-01' and EVE_DATE <= '2016-01-05'
and SITE = 'P'
and SITE_SERV like 'serv1X%'
group by
CUST
danych jest podzielona przez 6 miesięcy. Każda kolumna, która trafia do klauzuli where, jest indeksowana. Tam całkiem sporo indeksów & będzie dużą listą do spisania tutaj. Stąd właśnie podsumowujące w słowach. W odniesieniu do tego zapytania, EVE_DATE + PAGE_TYPE_COUNT
jest jednym z kompozytowych indeksów & więc są CUST + SITE_SERV + EVE_DATE
, EVE_DATE + SITE_SERV
, EVE_DATE + SITE
,
Klucz podstawowy jest właściwie obojętne liczba automatycznego przyrostu. Nie jest uczciwy. Nie mam dostępu do planu wyjaśniającego. Zobaczę, co mogę w tej sprawie zrobić najlepiej.
Byłbym wdzięczny za pomoc w ulepszeniu tego.
Czy możesz określić, które indeksy są używane (jeśli występują), a także jakie struktury wyglądają? Klucze główne używane itp.? – CR41G14
możesz podać więcej szczegółów: liczba wierszy, indeksy, silnik magazynu itd. –
Dziękuję bardzo. Niestety, przegapiłem aktualizację tych danych. Pozwól mi to teraz zrobić. – usert4jju7