У меня есть запрос, который получает все идентификаторы пользователей, которые вошли в систему за последний год.
Запрос1:
SELECT user_id, user_name
FROM logins
WHERE login_date BETWEEN "2015-09-01" AND "2016-09-01"
GROUP BY user_id;
Execution time: 625ms
И еще один запрос, аналогичный приведенному выше, теперь с дополнительными фильтрами для отображения имен пользователей с «jeff».
Query2:
SELECT user_id, user_name
FROM logins
WHERE login_date BETWEEN "2015-09-01" AND "2016-09-01"
AND user_name LIKE '%jeff%'
GROUP BY user_id;
Execution time: 587ms
Общее время выполнения составляет 1212 мсек.
Я использую Query1 только для получения общего количества пользователей, вошедших в систему в течение года, и Query2, чтобы получить список пользователей с user_name, например, jeff.
Проблема в том, что мне нужно выполнить оба запроса, а это занимает больше времени.
Есть ли способ объединить оба запроса в один и получить нужные мне данные, то есть общее количество вошедших в систему пользователей и список вошедших в систему пользователей с user_name, например 'jeff'? в то же время минимизируя время выполнения?
Образец данных:
user_id user_name login_date
1 annie 2015-10-02
2 greg 2015-12-25
3 jeff 2015-11-05
4 aljeffar 2016-03-06
5 jeff1 2015-07-07
2 greg 2016-01-30
1 annie 2015-11-13
3 jeff 2016-02-14
2 greg 2016-09-30
3 jeff 2016-07-04
Запрос1 Результат:
user_id user_name 1 annie 2 greg 3 jeff 4 aljeffar Total result count: 4 -- this should be the fix value of total_loggedin_users column below
Query2 Результат:
user_id user_name 3 jeff 4 aljeffar
Ожидаемый окончательный результат:
user_id user_name total_loggedin_users 3 jeff 4 4 aljeffar 4