Я застрял, пытаясь удалить вложенную часть из следующего запроса:
SELECT DISTINCT * FROM `audit` WHERE action_performed = 'REJECTED' AND `event_id` IN (
SELECT DISTINCT event_id AS `Count`
FROM `audit`
WHERE username = 'someUser'
AND action_performed IN ('SUBMITTED_FOR_APPROVAL', 'SAVED_AND_APPROVED')
AND (action_timestamp >= '2012-01-12 00:00:00' AND action_timestamp <= '2012-01-24 23:59:59'))
По сути, я пытаюсь получить количество отклоненных событий пользователем, которые были отправлены им ранее.,Я определяю это по столбцу action_performed
, который принимает значения, такие как SUBMITTED_FOR_APPROVAL
, SAVED_AND_APPROVED
и REJECTED
.
. Причина, по которой я хочу удалить вложенную часть, заключается в том, что таблица audit
в настоящее время содержитболее 100 тыс. строк, а результат самого вложенного запроса - около 2000 строк, поэтому время ожидания запроса всегда истекло.
Я попытался выполнить поиск на сайте и выполнил ВНУТРЕННЕЕ СОЕДИНЕНИЕ, как предлагается в некоторых вопросах,но возможно я делал это неправильно!Спасибо.
РЕДАКТИРОВАТЬ - Структура таблицы audit
выглядит следующим образом
Field Type
id int(11)
username varchar(100)
event_id int(11)
action_performed varchar(100)
action_timestamp timestamp