В настоящее время я работаю с большой таблицей (150 тыс. Строк и с подсчетом), хотя она была меньше, запрос, который я пытаюсь выполнить, был намного быстрее, но по мере роста он очень медленный, даже если я ограничиваю 1, он можетзаймет до пяти минут.Мне нужно ускорить это.
Есть две таблицы: пользовательская таблица (около 5000 записей) и своего рода таблица истории (около 150 000 записей), в которой есть два столбца: дата и статус на эту дату.
Запрос является выбором, который находит пользователей, у которых нет записи истории на определенную дату.
В данный момент я пытаюсь сделать следующее:следующим образом:
select
u.user_id
from
users u
left join history h on u.id= h.user_id and date = '20101116'
where
date IS NULL;
Как это работает, я присоединяюсь к дате 20101116
(в формате ГГГГММДД), и если значение этой объединенной таблицы равно null
, я знаю, что у меня нетзапись истории на данную дату.Это работает, но невероятно медленно, мне интересно, есть ли более быстрый / умный способ сделать это.
Мои таблицы, таким образом:
пользователи
+------+-----------------+
| id | email_address |
+------+-----------------+
history
+------+-----------+--------+----------+
| id | user_id | date | status |
+------+-----------+--------+----------+
У меня есть индексы только для столбцов ID обеих таблиц.