在构建'之间,PHP和MySQL之间是否存在显着的性能差异?内联的SQL语句(或者'硬编码'它)并从MySQL视图中选择?
例如:
$sql = "SELECT `table1`.`field1`,`table1`.`field2`,`table2`.`field1`,`table2`.`field2`
FROM `table1`
RIGHT JOIN `table2` On `table1`.`field1` = `table2`.`field1`;";
与
$sql = "SELECT * FROM `view1`;";
其中view1
实际上是同一个陈述。
答案 0 :(得分:2)
观点的表现很复杂。 MySQL还没有其他RDMS的所有优化技巧来优化来自视图的查询。
例如,请阅读:http://www.percona.com/blog/2007/08/12/mysql-view-as-performance-troublemaker/它已过时,但会让您了解问题。
如果MySQL可以使用查询合并处理您的视图 - 也就是说,通过内部扩展您的查询以便将视图的逻辑嵌入其中 - 它将能够优化它,就像您将视图逻辑写入查询。对于您的问题中的示例,这可能是正确的。在这种情况下,使用视图的成本很小或为零。
如果没有,那么它会创建一个包含视图的内部临时表类数据结构。那个类似于表的数据结构没有索引,所以它必须作为一个整体处理来处理诸如WHERE
和ORDER BY
子句之类的事情。这可能会损害您的表现。
没有尝试就无法找到这些东西。您不仅应该在查询中使用EXPLAIN
,还应该实际衡量其效果,以便决定如何编写视图和查询以获得可接受的性能。
最好的办法是让您的应用程序正常运行,然后对其进行优化。如果您足够幸运,您的应用程序可以扩展(获得大量用户和数据),您需要重新访问优化,因为您的表越来越大。