Предоставлено Alden W. Этот ответ на один из моих вопросов, подобных вашему, был задан Alden W.
Вы можете добиться лучшей производительности, указав Алгоритм ПРОСМОТРА как MERGE.С помощью MERGE MySQL объединит представление с вашим внешним оператором SELECT WHERE, а затем разработает оптимизированный план выполнения.
Для этого, однако, вам придется удалить оператор GROUP BY из вашего VIEW.Таким образом, если в ваше представление включен оператор GROUP BY, MySQL выберет алгоритм TEMPLATE.Сначала создается временная таблица для всего представления, прежде чем она будет отфильтрована оператором WHERE.
Если алгоритм MERGE не может быть использован, вместо него должна использоваться временная таблица.MERGE нельзя использовать, если представление содержит одну из следующих конструкций:
Агрегированные функции (SUM (), MIN (), MAX (), COUNT () и т. Д.)
DISTINCT
GROUP BY
HAVING
LIMIT
UNION или UNION ALL
Подзапрос в списке выбора
Относитсятолько для литеральных значений (в данном случае нет базовой таблицы)
Вот ссылка с дополнительной информацией.http://dev.mysql.com/doc/refman/5.0/en/view-algorithms.html
Если вы можете изменить представление, чтобы оно не включало оператор GROUP BY, для указания алгоритма представления используется следующий синтаксис:
CREATE ALGORITHM = MERGE VIEW ...