2015-02-08 3 views
1

У меня был вопрос как, что (на самом деле, это часть сложного запроса. Тем не менее, я извлек его просто показать проблему, которая у меня есть)MySql GROUP BY + В исполнении

SELECT 
    bar.foo, count(1) 
FROM 
    bar 
WHERE 
    bar.baz in ("1", "2", "3", "4", "5") 
GROUP BY 
    bar.foo; 

Проблема с этим запрос заключается в том, что это «Использование временного файла с использованием filesort»

У меня есть указатель на bar.baz. Однако, похоже, что это не помогает, из-за оператора IN.

Я видел в нескольких местах рекомендацию в таком случае, чтобы разбить ее на несколько запросов с простым указанием where (bar.baz = 1) и использовать JOIN. Однако это не сработает для меня, потому что эти «1», «2» и т. Д. Фактически возвращаются подзапросом.

Я - курьер. Есть ли способ избежать filesort здесь?

ответ