Вы должны переместить сравнение в предложение WHERE
и отказаться от LEFT JOIN
:
SELECT COUNT(*) as 'id_ac'
FROM kont_uji_rutin ur JOIN
alamat a
ON ur.id_prins = a.id_prins
WHERE ur.tgl_tri BETWEEN '2019-01-01' AND '2019-12-31' AND
a.alamat_prins LIKE '%Aceh%';
Это не окажет большого влияния на производительность. Стоит попробовать индексы на:
kont_uji_rutin(tgl_tri, id_prins)
alamat(id_prins, alamat_prins)
(они охватывают запрос, который может повысить производительность).
В конечном счете, проблема заключается в подстановочном знаке в начале шаблона. Это предотвращает использование индекса. Вы можете рассмотреть полнотекстовый индекс на alamat(alamat_prins)
. Это должно ускорить запрос, если полнотекстовая функциональность соответствует вашим потребностям.