Mam pewien problem z poniższym zapytaniem SELECT, które wykonuje mi się około 2 sekund. Aktualnie tabela data ma około 3 miliony rekordów natomiast tabela website ma jedynie 10. Aktualnie co udało mi się zrobić to dodałem indeksy w tabeli, ale wykonywanie zapytania się nie skróciło (explain pokazuje, że są używane indeksy, indeksy nałożyłem na tabelę data, dla kolumn stamp i companyId. W przyszłości baza będzie miała jeszcze więcej rekordów oraz klientów którzy będą korzystać ze strony dlatego tak ważne jest zoptymalizowanie tego zapytania.
SELECT b.name, d.companyId, SUM(negative) total_neg, SUM(positive) total_pos, ROUND(100-(100/(SUM(negative)+SUM(positive))*SUM(negative))) health FROM DATA d INNER JOIN website b USING(companyId) WHERE stamp LIKE ? AND d.companyId = ?
Problem może leżeć w źle nadanych indeksach ?
Z góry dzięki za pomoc!