我正在开发一个Web应用程序(PHP / MySQL),我正在寻找最佳性能。
我正在构建一个视图,在这个视图中我必须加入多个数据,但我想知道,将视图与另一个视图或表连接之间的最佳选择是什么。
更清楚一点,如果我有:
View_1 = Table_A加入Table_B
我需要来自Table_A和Table_B的View_2数据,我应该
View_2 = Table_C join View_1或View_2 = Table_C join Table_A join 表-B
非常感谢
答案 0 :(得分:2)
查看特定查询的解释计划。
加入视图而不是基础表可能会对性能产生影响 - 因为正如Atip Roy所解释的那样,执行连接的顺序对性能很重要,并且有一些视图中的联接可能会阻止您对查询中的联接进行最佳排序。
但这完全取决于您的查询 - 它可能没有任何区别。
而且,使用视图也有好处:它意味着该视图的逻辑只存储在一个地方。您给了我们一个简化的示例,但在现实生活中,视图1的代码可能更复杂。如果您需要在多个位置使用相同的逻辑,那么尽可能避免代码重复是一件好事。
所以,我会检查表现是否真正重要(以及重要程度)。我宁愿使用该视图,除非该选项的性能不可接受。
答案 1 :(得分:1)
继续使用单个表总是一个好主意,如果您使用任何可能减少行数的内连接,请先执行此操作。行数减少总能帮助您提高性能。鉴于表格加入,您每次都可能无法获得上述灵活性。