gpt4 book ai didi

php - 内联 SQL 和从 View 中选择之间的区别

转载 作者:行者123 更新时间:2023-11-29 07:44:52 25 4
gpt4 key购买 nike

在 PHP 和 MySQL 中,内联“构建”SQL 语句(或对其进行“硬编码”)与从 MySQL View 中进行选择之间是否存在显着的性能差异?

例如:

$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 实际上是相同的语句。

最佳答案

View 的性能很复杂。 MySQL 尚不具备其他 RDMS 的所有优化技巧来优化 View 查询。

例如,请阅读:http://www.percona.com/blog/2007/08/12/mysql-view-as-performance-troublemaker/它已经过时了,但可以让您了解问题。

如果 MySQL 可以使用查询合并来处理您的 View ——也就是说,通过内部扩展您的查询,以便将 View 的逻辑嵌入其中——那么它将能够优化它,就像您将 View 逻辑写入其中一样查询。您问题中的示例可能也是如此。在这种情况下,使用 View 的成本很小或为零。

如果没有,那么它会创建一个包含 View 的内部临时表状数据结构。这种类似表格的数据结构没有索引,因此必须将其作为一个整体来处理,以处理诸如 WHEREORDER BY 之类的事情> 条款。这可能会损害您的表现。

如果不尝试的话,就没有办法确定地找出这些东西。您不仅应该在查询上使用EXPLAIN,还应该实际测量它们的性能,以决定如何编写 View 和查询以获得可接受的性能。

最好的办法是让您的应用程序正常运行,然后对其进行优化。如果您足够幸运,能够扩展应用程序(获得大量用户和数据),那么随着表变得越来越大,您将需要重新审视优化。

关于php - 内联 SQL 和从 View 中选择之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com