Является ли запрос одной записи из представления MySQL, включающей тысячи, эквивалентным запросу этих тысяч +1 - PullRequest
2 голосов
/ 10 марта 2009

Я всегда надеялся и предполагал, что это не так - теория множеств (или что-то в этом роде) обеспечивает быстрый доступ к результату.

Я создал не обновляемое представление, которое агрегирует данные из нескольких таблиц таким образом, что получается экспоненциальное число записей. С этой точки зрения я запрашиваю одну запись за раз. Поскольку базовый набор данных небольшой, этот метод работает хорошо, но я обеспокоен тем, что он не будет масштабироваться.

Я слышал, что MySQL использует временные таблицы для реализации представлений. Мое сердце болит при мысли о том, что потенциально огромные временные таблицы появляются и исчезают для каждого запроса.

1 Ответ

1 голос
/ 10 марта 2009

Используйте синтаксис explain <select query>, чтобы увидеть, что действительно происходит в вашем запросе.

Вообще говоря, использование представления эквивалентно использованию подзапроса с тем же SQL. Не лучше и не хуже, просто ярлык для предотвращения повторной записи одного и того же подзапроса.

Иногда в конечном итоге вы получите временные таблицы, используемые для разрешения некоторых запросов comples, но это не должно происходить часто, если структура БД хорошо оптимизирована и использование представлений вместо подзапросов ничего не изменит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...