MySQL视图比普通查询更快吗?

Dis*_*oat 27 mysql optimization view

我有一个使用许多连接的复杂查询(实际上是8个).我想把它简化成一个视图.经过一番研究后,我可以看到简单性和安全性的好处.但我没有看到任何关于速度的提及.

视图是否像预编译一样工作,其中查询是预编译的?使用视图会有显着的性能提升吗?

Lar*_*tig 16

不,视图只是存储的文本查询.您可以申请WHEREORDER反对,执行计划将根据这些条款进行计算.

  • 这不是严格意义上的.如果为视图算法选择合并,则本质上是正确的,但如果选择temptable,它将实现.未定义(默认情况下,如果未指定)允许MySQL选择,这可以做一些你可能没想到的事情. (4认同)
  • 也许您比我更了解,但在我看来是的,视图存储了在请求结果时被解释的文本。TempTable 只是告诉 MySQL 在运行时使用临时表执行该评估,而不是尝试修改原始查询的 SQL 以包含视图定义。在视图创建时不会对视图 SQL 的内容进行预计算或分析。 (2认同)