2014-11-22 93 views
-1

只是有兴趣,也许有人可能知道这一点。如果我使用延迟加载来获取所有属性,关系等等,则对数据库进行约350次查询,完全呈现页面需要大约2秒。如果我使用多个连接创建一个大型查询来获得所有我需要的关系,那么这会造成〜20个查询,其中一个非常大,问题是这个大型查询第一次需要大约10秒才能执行,之后它会被缓存,速度更快,整个页面加载时间大约为1.5秒,但问题是每个用户对该查询都有不同的参数,因此每个用户第一次使用它的时间为10秒。为什么第一次使用这么久?doctrine2多查询VS加入

回答

0

请问,如果您使用的是存储过程?我添加了一个使用存储过程https://docs.oracle.com/cd/F49540_01/DOC/java.815/a64686/01_intr3.htm的优点的链接。你能给不同的用户提供一些参数的例子吗?

感谢

+0

不,我没有使用它们,因为我的网站仍在不断发展,我可能需要多次更改数据库结构,目前它不是那么大的问题,但我对未来有点想。 关于参数: 被阻止的用户。因为我正在使用其他查询和。 – user2118788 2014-11-22 20:18:45

+0

@ user2118788如果要获取大量结果,最好开始使用存储过程,因为它们会提高查询的性能。这只是一些需要思考的问题。如果查询数量增加,将所有查询转换为存储过程的任务将变成一件庞大的事情。 – mfredy 2014-11-24 11:07:10

0

当你给的数据基础架构没有任何信息,数据大小等参数是非常难以确定的糟糕表现的根本原因。但是,StackOverflow中有another answer这可能是进一步调查的一个很好的起点。

一般考虑以下几个问题展开调查/优化:

  • 真的需要你从数据库中获取(一次)的信息?
  • 数据库是否针对您执行的查询进行了优化?
  • 您需要多久执行一次查询?如果缓存它们,缓存的使用频率有多少?