我应该批量获取mysql数据,还是尽可能少地获取?

我应该批量获取mysql数据,还是尽可能少地获取?,mysql,performance,Mysql,Performance,我不太确定使用MySQL时的正确方法。当我从一个大网站开始的时候,我常常使用一个功能,即load_articles,来加载包含所有信息的文章。我加载了所有应该以某种方式显示的文章 然而,通常只使用一些文章信息,例如仅标题、仅图像图标。。。所以我创建了面向对象的模型,其中文章使用MySQL在需要时获取属性,使用\uu get和ArrayAccess。这通常会导致更多的查询,但会减少从MySQL获取的数据量 当然,理想的方法是缓冲“需要的数据”,然后发送一个查询。但如果这对我来说太复杂了,我应该瞄准

我不太确定使用MySQL时的正确方法。当我从一个大网站开始的时候,我常常使用一个功能,即
load_articles
,来加载包含所有信息的文章。我加载了所有应该以某种方式显示的文章

然而,通常只使用一些文章信息,例如仅标题、仅图像图标。。。所以我创建了面向对象的模型,其中
文章
使用MySQL在需要时获取属性,使用
\uu get
ArrayAccess
。这通常会导致更多的查询,但会减少从MySQL获取的数据量

当然,理想的方法是缓冲“需要的数据”,然后发送一个查询。但如果这对我来说太复杂了,我应该瞄准哪里

  • 大容量获取所有可能需要的数据并丢弃不必要的数据-减少查询量
  • 在生成页面时,根据需要延迟加载各个属性—通过许多查询获取少量数据

  • 如果第二个更好,我是否应该尽量不获取
    SELECT*
    ,而是根据需要对单个属性进行多个选择?

    首先,
    答案完全取决于网页的加载方式&用户需求和SLA是什么

    假设您的页面上有5个元素,那么您的解决方案将如下所示:

  • 获取批量数据并将其存储在本地并加载

    当您的用户需要一次查看所有数据或在用户端需要一些非常计算性的东西时,这是一种很好的方法。在这种情况下,也只获取所需的属性。切勿使用总是最差的
    select*。
    传输数据时检查网络带宽,如果可能,如果有许多图像或静态数据,请使用CDN

  • 首先只获取基础数据,然后根据用户要求获取更多数据

    当您的用户通常只想看到网页的第一部分时,这是一个很好的方法,或者更确切地说,他很乐意在1秒内看到屏幕上的至少第一部分。 当用户向下滚动并执行某些活动时,您可以缓慢地加载/获取更多数据。 这样你们就可以节省应用程序所需的内存量。服务器及其cpu周期处理批量数据。这种方法还通过快速显示某些内容并继续加载来维护用户

  • 这一切都是为了页面加载SLA。这两个选项都适用于不同的条件(现在更优选使用第二个)

    谈到慢sql查询,您需要规范化数据库,并在需要时使用适当的索引。使用优化的sql查询确保只获取所需的数据,并且效率高

    如果你有一些无法规范化的东西,并且变得越来越复杂,那么你可以看看nosql选项

    有效地应用这些技术将帮助您实现所需的性能。

    我希望我已经澄清了您的困惑。

    您到底在优化什么?是否有任何东西必须优化,或者只是一个基于无内容的过早优化的例子?主要原因是我的好奇心——我不太确定MySQL到底是如何工作的。但我也确信我的页面可以在2秒钟内生成得更快。没错,那么真正的问题就更严重了。第一步应该是找出为什么需要2秒钟。这意味着您正在传输大量数据(兆字节或更多),或者MySQL在查找所需记录时速度较慢,这通常是由于索引不理想或MySQL配置不当所致。遗憾的是,PHP很少成为瓶颈,您试图做的是通过调整逻辑在PHP级别上优化某些东西。这不会产生您想要的结果,至少不会让您在应用程序中感觉到。我安装了xdebug,现在我正在尝试找出哪个部分占用的时间最多。您正在回答一个问题“如何让页面加载更快。”。这不是我问的问题。。。我正在寻找有关MySQL的具体响应,并用良好的洞察力来解释后台发生的事情。对,我已经解释了Web应用程序中的数据库访问方法的对应点,在查询数据库时应该考虑这些方法。它回答了什么时候批量进货,什么时候分批进货,我想这是个问题。有时仅仅调整数据库是不够的。