返回一个大查询或一些较小的查询是否更好?

Moh*_*mad 17 mysql

我正在使用MySQL来存储视频游戏数据.我有标题,平台,标签,徽章,评论,开发人员,出版商等表...

当有人正在观看游戏时,最好是有一个查询返回与游戏相关的所有数据,还是最好使用多个查询?直觉上,由于我们有评论,因此将它们包含在同一个查询中似乎毫无意义,因为它们需要进行分页.但是在其他情况下,我不确定是要打破查询还是使用两个查询......

我有点担心表现,因为我现在加入以下表格的游戏:开发者,出版商,元标签,徽章,标题,流派,子类,分类......以获取游戏徽章,(来自games_badges;很多 - 来自 - 很多游戏桌,很多很多到徽章表)我可以做另一个连接,或运行一个单独的查询....我不确定什么是最好的....

Exp*_*lls 14

使用一个查询比使用多个查询要快得多,因为查询的启动和查询计划本身的计算成本很高,并且连续运行多个查询会使服务器每次都更慢.显然,您应该只获取实际需要的数据,但更少的查询总是更好.

因此,如果要在页面上显示20个游戏,则可以使用LIMIT子句加快查询(仍然只使用一个查询),并且只有在到达下一页时再次运行该查询.那或者你可以让他们等待查询完成并立即获得所有数据.一个大的等待或几个小等待.

tl; dr使用尽可能少的查询.

  • 在提出"显着更快"之前,应该进行性能分析. (10认同)

zer*_*kms 10

没有灵丹妙药.

  1. 始终尝试只获取必要的数据.
  2. 无论一个大的或几个小的查询是否更好,都没有答案.每个案例都是独特的,要回答这个问题,你应该配置您的应用程序并检查查询EXPLAIN小号


src*_*der 5

这通常是一个处理问题。

  • 如果进行一个查询意味着要检索成千上万的条目,请调用多个查询以使MySQL进行处理(求和等)。
  • 如果进行多个查询涉及数十个或数百个查询,则调用一个查询。

显然,您总是会遇到这两种情况,因为如果您要问这个问题,那么goto选项都不是,因此选择实际上是:

  1. 选择一个你可以打的
  2. 尽可能多地缓存或缓解它,以使您很少受到打击
  3. 尝试在数据库中插入预处理数据,以帮助您处理当前数据
  4. 作为cron的一部分进行处理,并使应用程序仅检索数据
  5. 退后一步,探索不需要处理的其他可能方法