Как оптимизировать sql запрос?

Как оптимизировать тай запрос
есть 2 базы
tbl_1 - 123к записей весит 165мб
tbl_2 - 123к записей весит 170мб

все поля в запросе индексированы

SELECT count(*) FROM tbl_1
LEFT JOIN tbl_2 ON (tbl_1.id = tbl_2.id)
WHERE tbl_1.param_1 = param
AND tbl_2.param_1 = param_1
AND tbl_2.param_2 = param_2


Таблица мне кажется не большая но такой запрос выполняется 0.7-1.5 сек, как его оптимизировать?
  • Вопрос задан
  • 2290 просмотров
Пригласить эксперта
Ответы на вопрос 3
Melkij
@Melkij
PostgreSQL DBA
explain где?
Какие индексы есть?

LEFT JOIN tbl_2 ... where ... tbl_2.param_1 =
tlb_2.param_1 не может быть NULL по условию запроса, следовательно выполнение LEFT JOIN - ошибка. Вам нужен INNER JOIN
Ответ написан
Комментировать
@lavrentiev
Back-end разработчик
Кинь в кэш как вариант.
Ответ написан
Комментировать
@ihorbalias Автор вопроса
При INNER скорость такая же.
+----+-------------+-------+--------+---------------------+---------+---------+-
---------------+-------+------------------------------------+
| id | select_type | table | type   | possible_keys       | key     | key_len | ref            | rows  | Extra                              |
+----+-------------+-------+--------+---------------------+---------+---------+-
---------------+-------+------------------------------------+
|  1 | SIMPLE      | tbl_2    | ref    | id,param_1, param_2  | param_1    | 302     | const    | 82293 | Using index condition; Using where |
|  1 | SIMPLE      | tbl_1    | eq_ref | PRIMARY, param       | PRIMARY | 4       | tbl_2.id |     1 | Using index condition; Using where |
+----+-------------+-------+--------+---------------------+---------+---------+-
---------------+-------+------------------------------------+
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы