Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在何处对从数据库检索的数据进行后期处理_Php_Sql_Database_Performance_Orm - Fatal编程技术网

Php 在何处对从数据库检索的数据进行后期处理

Php 在何处对从数据库检索的数据进行后期处理,php,sql,database,performance,orm,Php,Sql,Database,Performance,Orm,由于性能方面的原因,我们重构了数据访问(sql)的一些快速、肮脏的实现。 和以前一样,我们一步一步地访问对象。首先是基础数据,而不是用一些相关的数据来填充这些数据,这些数据本身可能会用一些其他相关的数据来填充 到目前为止,所有数据都是在单个sql语句中访问的,这些语句更复杂,但也不太多,最多有四个连接 因此,我们检索的数据不是类似对象的格式(实际上是嵌套数组),例如 而相反,数据都是“平坦的”,如 prop1 prop2a prop2b1 prop2b2 prop3a prop3b 我的oo本

由于性能方面的原因,我们重构了数据访问(sql)的一些快速、肮脏的实现。 和以前一样,我们一步一步地访问对象。首先是基础数据,而不是用一些相关的数据来填充这些数据,这些数据本身可能会用一些其他相关的数据来填充

到目前为止,所有数据都是在单个sql语句中访问的,这些语句更复杂,但也不太多,最多有四个连接

因此,我们检索的数据不是类似对象的格式(实际上是嵌套数组),例如

相反,数据都是“平坦的”,如

prop1
prop2a
prop2b1
prop2b2
prop3a
prop3b
我的oo本能告诉我在检索后预处理这些数据,并将其以类似对象的结构发送到前端(html、js——这是我们唯一的客户机),就像重构之前发送的那样。另一方面,性能原因意味着只处理实际需要的数据,如果可能的话,让客户机进行一些工作提升

底线:一般来说,这里的最佳/良好做法是什么

a) 在后端处理数据准备

b) 将检索到的数据发送到前端并在那里进行处理

c) 尽快切换到ORM架构

非常感谢


Robson

鉴于我使用了20多年的所有应用程序,性能永远是王者。您应该始终让RDBMS通过使用连接和您需要在后端执行的任何操作来完成它的工作,以便只检索您需要的数据(注意:您可能需要查看“解释计划”或等效的数据,或者在表上添加索引以获得最佳性能)

无论如何,只检索您需要的数据。通过检索更多数据,您可以“在线”添加更多数据,然后必须在前端处理和删除数据

至于ORM——这是一个经常被遵循的模型,我也非常相信使用ORM工具,但不要仅仅为了创建对象而创建对象。如果我可以返回100行数据,而不是返回100个相关对象,那么我宁愿(出于性能原因)返回前者


我投的票是a)。我总是喜欢在后端做同样多的工作,因为将来可能会有不同类型的客户端。

+1让RDBMS完成它的工作。如果您仍在编写自己的查询(而不是使用ORM,我不推荐使用ORM),请查询所需内容并调整SQL。任意限制四次连接会让你的生活变得更加艰难,没有任何理由。Thx亚瑟。关于您的评论:只检索您需要的数据。1) 什么时候区分有经验法则吗?说数据开销与代码简单性2)如果您确实需要进行区分:一般来说,您会在哪里进行区分?您希望编写单独的查询还是只编写单独的后期处理方法?Thx格罗斯沃格尔。查询中的最大联接数没有限制。4只是我们目前的最大值,但还是要感谢您的警告。我可能倾向于这样做:)通常我可能(如果需要)为每一行检索额外的列(例如,id或其他外键),以优化未来的查询,但我从不检索额外的行。对于多个查询的复杂查询,我同样会选择复杂查询,直到某一点。我不认为三路连接复杂,和其他代码一样,你可以很好地评论它,它变得更容易理解。我很感激你的帮助亚瑟。又是Thx。
prop1
prop2a
prop2b1
prop2b2
prop3a
prop3b