【问题标题】:Writing query in controller instead model在控制器中编写查询而不是模型
【发布时间】:2019-06-27 04:36:10
【问题描述】:

我想问一下我们是否在控制器而不是模型中编写查询。它有什么作用吗?比如加载数据变慢还是其他?

我要使用的数据超过 1000 个。

如果不是,是什么导致网络中的数据加载缓慢。

像 ajax 请求一样需要 4-5 秒,有的需要 1 分钟

【问题讨论】:

  • 查询通常在控制器中执行,通常更快。
  • @Programnik 查询不通常在使用 mvc 时在控制器中执行,并且在控制器中运行查询只会可以忽略速度更快 - 不是因为查询,而是加载另一个 php 类(模型)的开销。

标签: codeigniter model-view-controller


【解决方案1】:

在控制器或模型中运行查询几乎没有区别,除了模型增加的少量(可忽略的)开销(如果是我,我不会担心)。如果您想遵循 MVC 设计模式,数据库查询通常在模型中完成,而不是在控制器中完成。但这在 CodeIgniter 中更像是一种风格上的东西,因为它不像在其他使用 ORM 的框架中那样严格执行。

话虽如此,如果您遇到较长的执行时间,我建议您不要一次获取所有数据,而是使用加载更多、分页、数据表或类似系统来减少一次选择的记录数量根据您可接受的执行/响应时间,一些更易于管理的东西。

您可以通过设置基准点来测试最适合您的情况:https://www.codeigniter.com/user_guide/libraries/benchmark.html

【讨论】:

【解决方案2】:

我使用 CodeIgniter 已经有几年了,我意识到可以在模型中正确地进行查询。

MVC 的理念是关于代码分离,其中 M(模型)处理或执行主要与数据库相关的应用程序的繁重工作,V(视图)执行系统用户进行交互的表示与应用程序一起使用,C(Controller) 充当模型和视图之间的信使或中介。

这将控制器从大量进程中释放出来,因此它不必从数据库中查询,尝试上传大量数据然后将其显示在视图上。

我总是使用(我称之为小魔法){elapsed_time} 和 {memory_usage} 来检查我的应用程序是如何按照我实现的任何逻辑工作的,你可以试一试。

我认为这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 2021-10-15
    • 1970-01-01
    • 2016-03-30
    • 2017-12-11
    • 1970-01-01
    • 2014-07-15
    • 2017-12-28
    相关资源
    最近更新 更多