Использование VIEW в mySQL 5.0. Проблемы с производительностью.

Для тех, кто не знает, что это такое — ссылка
Вкратце: созздаёт, фактически, «временную таблицу» (более правильно сказать — виртуальную таблицу или результат выборки в виде таблицы), в которой могут храниться данные из других таблиц и результаты применения аггрегирующих функций к ним. При этом если хранятся только данные, то эта таблица обновляется при обновлении входящих в её состав таблиц.
Но оказывается, что, как и многие нововведения (хранимые процедуры должны перекомпилироваться заново при начале сессии, если использовать подзапросы — очень много запросов получается), это тоже имеет очень большие проблемы с производительностью (ссылка).
Вкратце:
неудобно искать проблемы в запросах (вроде как обращаешься к одной таблице, а на деле — нет), создаётся временная таблица без индексов. Также есть проблемы у mySQL при оптимизации запросов при обращении к VIEW.

2 Responses so far.

  1. VIEW не создает таблицы — фактически это просто именованный SELECT, по сути аналогичный хранимой процедуре.
    Соответственно, он не имеет ничего из свойств обычной таблицы — это просто СРЕЗ данных.
    Срезы, обладающие всеми атрибутами таблицы, называются «материализованными представлениями», кажется есть в Oracl.
  2. bullgare:
    Ну это я так по простому объяснил «A view is a named, derived table whose definition is a persistent part of the database.».
    Щас возьму в кавычки).
    Спасибо за замечание.
    Тем не менее, проблемы остаются(

LEAVE A COMMENT