gpt4 book ai didi

database - 在 MVC 模型中实现高效数据访问的最佳平衡点是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 20:33:02 26 4
gpt4 key购买 nike

我正在从事一些使用 MVC 框架的 PHP 项目,虽然它们都有不同的方法从数据库中检索对象,但就速度和减少时间而言,似乎没有什么比手动编写 SQL 查询更好的了查询次数。

例如,我的一个 Web 项目(由一名初级开发人员编写)执行了 100 多个查询,只是为了加载主页。原因是在一个地方,一个方法将加载一个对象,但稍后在代码的更深处,它将加载与第一个对象相关的其他一些对象。

这引出了问题的另一部分,即当您有一个表,其中一部分代码只需要几列的值,而另一部分需要其他内容时,人们在做什么?现在(在同一个项目中),每个对象都有一个 get() 方法,它会执行“SELECT *”(或明确列出表中的所有列),以便无论何时出于任何原因需要该对象,你得到了全部。

因此,换句话说,您听到了所有关于 SELECT * 有多么糟糕的讨论,但如果您尝试使用框架附带的 ORM 类,它通常只想这样做。您是否坚持选择带有 SELECT * 的 ORM 与手动编写特定的 SQL 查询?在我看来,我们在便利性和效率之间徘徊,如果我手写查询,如果我添加一列,我很可能不得不将它添加到代码中的多个位置。

很抱歉问了这么长的问题,但我解释背景是为了从其他开发人员那里获得一些想法,而不是特定的解决方案。我知道我们总是可以使用 Memcached 之类的东西,但我宁愿在开始使用之前先优化我们可以使用的东西。

感谢您的任何想法。

最佳答案

首先,假设您精通 SQL 和模式设计,那么在极少数情况下,任何将您从 SQL 语句中移除的抽象层都会超过手动编写 SQL 的效率。通常情况下,您最终会得到次优的数据访问。

100 个查询只是为了生成一个网页是没有借口的。

其次,如果您正在使用 PHP 的面向对象功能,您将对对象集合以及映射到 SQL 连接的扩展属性的种类有很好的抽象。但要牢记的重要一点是尽可能编写最好的抽象对象,而不考虑 SQL 策略。

当我以这种方式编写 PHP 代码时,我总是发现如果我的模式和类都合适,我就能够将每个网页的数据需求映射到极少数、非常高效的 SQL 查询。不仅如此,根据我的经验,这是最简单、最快的实现方式。将框架的东西放在 PHP 类和良好可靠的瘦 DAL 之间(注意:不是嵌入式 SQL 或 dbms 调用)是我能想到的最好的例子来说明“泄漏抽象”的概念。

关于database - 在 MVC 模型中实现高效数据访问的最佳平衡点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735681/

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