Какой из них более быстрый просмотр или подзапрос? - PullRequest
5 голосов
/ 05 июля 2011

Вопрос говорит сам за себя.Какой из них быстрее?И когда мы должны использовать представление вместо подзапроса и наоборот, когда дело доходит до оптимизации скорости?

У меня нет определенной ситуации, но я думал об этом, пытаясь кое-что с представлениями в mysql.

Ответы [ 2 ]

6 голосов
/ 05 июля 2011

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

Но это не относится к делу;это правильность проблема.Представления и подзапросы служат различным целям.Вы используете представления для обеспечения повторного использования кода или безопасности.Достигать подзапроса, когда вы должны использовать представление, не понимая последствий для безопасности и обслуживания, - глупо. Корректность превосходит производительность.

5 голосов
/ 05 июля 2011

Ни один из них не особенно эффективен в MySQL. В любом случае MySQL не кэширует данные в представлениях, поэтому представление просто добавляет еще один шаг в выполнении запроса. Это делает просмотры медленнее, чем подзапросы. Проверьте это сообщение в блоге для дополнительной информации http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/

Одной из возможных альтернатив (если вы можете иметь дело со слегка устаревшими данными) являются материализованные представления. Проверьте Flexviews для получения дополнительной информации и реализации.

...