@alexfyodrv

Можно ли улучшить такой простой запрос?

На данный момент время выполнения запроса 0.5 сек и это долго. Скажите можно ли улучшить этот запрос чтобы сделать его быстрее? Возможно у вас есть идеи?

SELECT
    `experience`.`role` AS role,
    COUNT(*) AS count_users
FROM
    `users`
LEFT JOIN
    `experience`
ON
    `experience`.`user_id` = `users`.`id`
GROUP BY
    `role`
ORDER BY
    `count_users`
DESC


На поле user_id в таблице experience уже есть индекс. Таблицы InnoDB. Этот запрос считает количество пользователей по ролям.
  • Вопрос задан
  • 218 просмотров
Решения вопроса 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
SELECT `experience`.`role` AS role, COUNT(*) AS count_users
FROM `experience`
GROUP BY `role`
UNION
SELECT 'Not role', 
  ( SELECT COUNT(*) FROM `users` ) - ( SELECT COUNT( DISTINCT( `user_id` )) FROM `experience` )
ORDER BY 2 DESC
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы