Подтвердить что ты не робот

Производительность представления MySQL

У меня есть таблица для примерно 100 000 пользователей.

Первый случай:

explain select state, count(*) as cnt from users where state = 'ca'

Когда я делаю план объяснения для вышеуказанного запроса, я получаю стоимость как 5200

Второй случай:

Create or replace view vw_users as select state, count(*) as cnt from users

Explain select cnt from vw_users where state = 'ca'

Когда я делаю план объяснения по второму запросу, я получаю стоимость 100 000.

Как работает предложение where в представлении? Применяется ли предложение where после просмотра всех строк? Как исправить эту проблему?

4b9b3361

Ответ 1

Это о алгоритме просмотра, который был использован.

Алгоритм слияния хорошо работает в большинстве табличных индексов, а whatnot - алгоритм temptable - во многих случаях ваши индексы будут просто полностью не использоваться.

И там много дерьма, что слияние не поддерживает

MERGE не может использоваться, если вид содержит любое из следующих конструкции:

* Aggregate functions (SUM(), MIN(), MAX(), COUNT(), and so forth)
* DISTINCT
* GROUP BY
* HAVING
* LIMIT
* UNION or UNION ALL
* Subquery in the select list
* Refers only to literal values (in this case, there is no underlying table)